0
以下查詢效果很好。它以兩層結果命令,均基於s.points
。MySQL ORDER BY,CASE根據每個案例的不同字段
- 第1層:所有結果均爲
s.datesubmitted
最近一小時內。 - 第2層:所有結果均以
s.datesubmitted
之前的1小時前爲準。
第1層的結果優先於第2層。因此,無論s.points
如何,在過去一小時內提交的任何內容都將顯示在超過一小時前提交的任何內容之上。
第2層中的結果都是1小時前提交的所有項目。與第1層類似,它們由s.points
訂購。我怎麼能離開由s.points
訂購的第1層,而是通過most_recent
訂購第2層?
由於提前,
約翰
$sqlStr = "SELECT s.loginid, s.title, s.url, s.displayurl, s.points, s.datesubmitted, l.username,
s.submissionid, s.subcheck, s.topten, COUNT(c.commentid) countComments,
GREATEST(s.datesubmitted, COALESCE(MAX(c.datecommented), s.datesubmitted)) AS most_recent
FROM submission s
JOIN login l ON s.loginid = l.loginid
LEFT JOIN comment c ON s.submissionid = c.submissionid
GROUP BY s.submissionid
ORDER BY
CASE
WHEN s.datesubmitted > DATE_SUB(NOW(), INTERVAL 1 HOUR) THEN 0
WHEN s.datesubmitted > DATE_SUB(NOW(), INTERVAL 1 HOUR) THEN 1
ELSE 2
END, s.points DESC
LIMIT $offset, $rowsperpage";