我正在嘗試創建一個自定義排序,該排序涉及另一個表中某些記錄的計數。例如,如果一個記錄在另一個表中沒有與其關聯的記錄,則它應該在排序中看起來高於具有一個或多個記錄的記錄。這是我到目前爲止:MySQL用子查詢評估案例
SELECT People.*, Organizations.Name AS Organization_Name,
(CASE
WHEN Sent IS NULL AND COUNT(SELECT * FROM Graphics WHERE People.Organization_ID = Graphics.Organization_ID) = 0 THEN 0
ELSE 1
END) AS Status
FROM People
LEFT JOIN Organizations ON Organizations.ID = People.Organization_ID
ORDER BY Status ASC
COUNT
內的子查詢不起作用。什麼是這樣做的正確方法?
更新:我感動case語句到order by
條款,並增加了join
:
SELECT People.*, Organizations.Name AS Organization_Name
FROM People
LEFT JOIN Organizations ON Organizations.ID = People.Organization_ID
LEFT JOIN Graphics ON Graphics.Organization_ID = People.Organization_ID
GROUP BY People.ID
ORDER BY
CASE
WHEN Sent IS NULL AND Graphics.ID IS NULL THEN 0
ELSE 1
END ASC
所以,如果如果People
記錄沒有任何圖形,Graphics.ID
將是無效的。這實現了迫切需要。
這裏有什麼問題? – AndreKR 2012-02-27 18:44:05