Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để chọn trường tham gia bên trong với IF / case?

Hãy thử truy vấn này ( đã chỉnh sửa ) -

SELECT c.*,
  CASE c.comment_type WHEN 8 THEN p1.photo_p_id WHEN 17 THEN p2.photo_id ELSE NULL END photo_id,
  CASE c.comment_type WHEN 8 THEN p1.column1 WHEN 17 THEN p2.column1 ELSE NULL END column1
FROM comments c
  LEFT JOIN photos p1
    ON c.object_id = p1.photo_p_id
  LEFT JOIN photos p2
    ON c.object_id = p2.photo_id

Một biến thể khác -

SELECT c.*, p.*
FROM comments c
  JOIN photos p
    ON c.comment_type = 8 AND c.object_id = p.photo_p_id OR c.comment_type = 17 AND c.object_id = p.photo_id



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để nhận Mã quốc gia từ plugin (intl-tel-input) sau khi gửi biểu mẫu?

  2. làm thế nào để nối hai bảng trên các thuộc tính chung trong mysql và php?

  3. Cardinality có thể khác nhau đối với các chỉ mục trùng lặp trong mysql không?

  4. Không thể kết nối DB với AWS

  5. Sử dụng Visio để tạo MySQL DDL