mySQL UNION子句带有两个ORDER BY子句

时间:2014-07-05 13:58:30

标签: mysql sql-order-by union fetch

这就是问题所在 我需要从我的表中获取行,其中创建的日期少于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

感谢这个令人敬畏的社区:)

1 个答案:

答案 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