我正在尝试创建一个自定义排序,该排序涉及另一个表中某些记录的计数。例如,如果一个记录在另一个表中没有与其关联的记录,则它应该在排序中看起来高于具有一个或多个记录的记录。这是我到目前为止: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