我在PHP中有这个SQL SELECT:
SELECT *
FROM ads
ORDER BY ad_sponsored_date DESC, ad_date DESC我想显示一个广告列表,他们通常是按日期排序,但如果一个是赞助的,那么它会出现在顶部。上面的内容很好地做到了这一点;但是我还需要测试这个ad_sponsored_date是否比时间戳更简单,如果是这样的话,那么只能按照第二个(ad_date)排序,这有可能吗?
就像这样,但我不知道正确的语法:
SELECT *
FROM ads
ORDER BY (ad_sponsored_date DESC IF ad_sponsored_date > $timestamp, ad_date DESC)发布于 2013-08-09 01:46:01
这捕获了SQL中的逻辑:
SELECT *
FROM ads
ORDER BY (case when ad_sponsored_date > $timestamp then ad_sponsored_date end) desc,
ad_date DESC;然而,我不清楚如何为“框架”的“其他”部分做些什么。
注意:在MySQL中,对于降序排序,空值放在最后,这就是为什么这会将赞助广告放在列表的首位。
发布于 2013-08-09 01:48:09
试一试
SELECT *
FROM ads
ORDER BY CASE WHEN ad_sponsored_date > '$timestamp'
THEN ad_sponsored_date
ELSE ad_date END DESC这是SQLFiddle演示
https://stackoverflow.com/questions/18138923
复制相似问题