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

Truy vấn MySQL trong đó THAM GIA phụ thuộc vào CASE

Nó có thể cần điều chỉnh để trả về kết quả chính xác nhưng tôi hy vọng bạn hiểu được ý tưởng:

SELECT ft1.task, COUNT(ft1.id) AS count
FROM feed_tasks ft1
LEFT JOIN pages p1 ON ft1.type=1 AND p1.id = ft1.reference_id
LEFT JOIN urls u1 ON ft1.type=2 AND u1.id = ft1.reference_id
WHERE COALESCE(p1.id, u1.id) IS NOT NULL
AND ft1.account_id IS NOT NULL
AND a1.user_id = :user_id

Chỉnh sửa:

Một lưu ý nhỏ về CASE...END . Mã gốc của bạn không chạy bởi vì, không giống như PHP hoặc JavaScript, CASE của SQL không phải là cấu trúc điều khiển luồng cho phép chọn phần nào của mã sẽ chạy. Thay vào đó, nó trả về một biểu thức. Vì vậy, bạn có thể làm điều này:

SELECT CASE
    WHEN foo<0 THEN 'Yes'
    ELSE 'No'
END AS is_negative
FROM bar

... nhưng không phải cái này:

-- Invalid
CASE 
    WHEN foo<0 THEN SELECT 'Yes' AS is_negative
    ELSE SELECT 'No' AS is_negative
END
FROM bar


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ràng buộc khóa ngoại trong khi kết xuất dữ liệu

  2. Tìm nạp các hàng đã được thêm vào giờ trước

  3. Làm thế nào để ngăn chặn trùng lặp tên người dùng khi mọi người đăng ký?

  4. Gỡ lỗi PDO mySql chèn NULL vào cơ sở dữ liệu thay vì trống

  5. Pooling =false trong chuỗi kết nối MySQL có nghĩa là gì?