这就是问题所在 我需要从我的表中获取行,其中创建的日期少于24小时,然后按喜欢对它们进行排序,然后将它们与同一表中的其余行进行UNION,但我希望剩余的行按创建日期进行排序。 换句话说,我需要为每个SELECT单独的ORDER BY子句。 更清楚,它是这样的:
SELECT *
FROM (SELECT *
FROM 'table'
WHERE 'date_created' > timestampadd(hour, -24, now())
ORDER BY 'likes' DESC
UNION
SELECT *
FROM 'table'
WHERE
ORDER BY date_created DESC ) AS Results
LIMIT 10 OFFSET 0
感谢这个令人敬畏的社区:)
答案 0 :(得分:0)
试试这个:
SELECT *, (date_created > timestampadd(hour, -24, now()) AS recent
FROM table
ORDER BY recent DESC, IF(recent, likes, 0) DESC, IF(!recent, date_created, 0) DESC
LIMIT 10 OFFSET 0