[英]SQL Condition in ORDER BY clause
我在這里有此查詢:
SELECT posts.id, username, cover, audio, title, postDate, commentsDisabled,
MAX(postClicks.clickDate) as clickDate,
COUNT(*) as ClickCount
FROM postClicks INNER JOIN
posts
ON posts.id = postClicks.postid INNER JOIN
users
ON users.id = posts.user
WHERE posts.private = 0
GROUP BY postClicks.postid
ORDER BY ClickCount
LIMIT 5
該查詢使我獲得前5個結果ORDER BY Count,即ClickCount。 我數據庫中的每個postClicks都有一個clickDate我現在想做的是得到的5個結果,在過去24小時內按ClickCount對其進行排序,我仍然需要5個結果,但它們需要按以下順序排列24小時內的ClickCount。
我曾經在where子句中使用它:
postClicks.clickDate > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
但是在24小時之后,我將不會獲得5個結果,我需要獲得5個結果。
我的問題是,我可以在order by子句中放入條件或案例嗎?
您不能在此查詢的ORDER BY
中放置條件,因為那樣會影響LIMIT
。 相反,您可以使用子查詢:
SELECT pc5.*
FROM (SELECT posts.id, username, cover, audio, title, postDate, commentsDisabled,
MAX(postClicks.clickDate) as clickDate,
COUNT(*) as ClickCount,
SUM(postClicks.clickDate > DATE_SUB(CURDATE(), INTERVAL 1 DAY)) as clicks24hours
FROM postClicks INNER JOIN
posts
ON posts.id = postClicks.postid INNER JOIN
users
ON users.id = posts.user
WHERE posts.private = 0
GROUP BY postClicks.postid
ORDER BY ClickCount
LIMIT 5
) pc5
ORDER BY clicks24hours DESC;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.