如果您熟悉论坛,当问题得到解答后,它会移至列表顶部。这个SQL查询如何工作?现在,我的查询如下:
SELECT *,
(SELECT count(*) FROM tblQA Q1 WHERE Q1.intResponseID = Q2.intQAID) AS answercount,
(SELECT cUsername FROM tblUsers tblU WHERE Q2.intPosterID = tblU.intUserID) AS username,
(SELECT CASE WHEN DAY(dSortDateTime) = DAY(NOW()) THEN DATE_FORMAT(dSortDateTime, 'Today at %l:%i%p')
ELSE DATE_FORMAT(dSortDateTime, '%b %e, %l:%i%p') END) AS post_time
FROM tblQA Q2 WHERE cCategory IN ('Football','Baseball','Basketball','Hockey')
ORDER BY dSortDateTime DESC, dSortDateTime DESC LIMIT 40
因此,当用户回答问题时,我希望将其反弹到问题列表的顶部。现在,查询运行的方式,它没有这样做。
期待您的帮助。
其他信息: dSortdatetime = date('Y-m-d H:i:s')
答案 0 :(得分:1)
我不知道你的架构,所以我不能给你实际的SQL,但你需要存储问题得到解答的时间(或者在问题和答案表之间进行联接以获得最新答案)对于每个问题)。然后按答案时间DESC订购。
答案 1 :(得分:0)
问题是它没有正确排序同一天发生的答案吗?如果是这样,那是因为DATE具有一天的粒度。您可能希望该列为DATETIME以存储时间(粒度为一秒)。