簡體   English   中英

ORDER BY子句中的SQL條件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM