2010-10-19 74 views
0

以下查询运行良好。不过,我想修改它。根据变量的年龄制定查询排序条件

我想订购when s.topten = 1 then 0 else 1 end只有当s.datesubmitted从目前的时间少于24小时完成。

我该怎么做?

由于提前,

约翰

$sqlStr = "SELECT s.loginid, s.title, s.url, s.displayurl, 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 
INNER JOIN login l ON s.loginid = l.loginid 
LEFT OUTER JOIN comment c ON s.submissionid = c.submissionid 
GROUP BY s.submissionid 
ORDER BY case when s.topten = 1 then 0 else 1 end, most_recent DESC 
LIMIT $offset, $rowsperpage"; 

回答

0

用途:

SELECT s.loginid, s.title, s.url, s.displayurl, 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 DAY) AND s.topten = 1 THEN 0 
      WHEN s.datesubmitted > DATE_SUB(NOW(), INTERVAL 1 DAY) AND s.topten != 1 THEN 1 
      ELSE 2 
      END, most_recent DESC 
    LIMIT $offset, $rowsperpage 
0

添加另一个WHEN条款,检查在-1区间和结果。