2014-07-05 27 views
0

這裏是問題 我需要從我的表中獲取行,其中創建的日期少於24小時,然後按喜歡對它們進行ORDER,然後將它們與同一表中的其餘行但我希望剩餘的行按創建日期排序。 換句話說,我需要爲每個SELECT單獨使用ORDER BY子句。 更清晰,它是這樣的:具有兩個ORDER BY子句的mySQL UNION子句

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

你錯過了'WHERE'條件在第二子查詢。 – Barmar

+0

您也在表名和列名稱周圍使用了錯誤的引號類型。他們應該反引號 - 單引號創建文字字符串。 – Barmar

回答

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 
+0

你是我的救世主兄弟。非常感謝 :* –