我正在尋找一個解決方案;查詢是:在MYSQL ORDER BY使用條件返回一個函數
SELECT MAX(forum_commenti.Data) AS MData, forum_post.id AS id, forum_post.Nome AS Nome, forum_post.Messaggio AS Messaggio, forum_post.Sezione AS Sezione, forum_post.Data AS Data, forum_post.Utente AS Utente, forum_post.Chiuso AS Chiuso, forum_post.Importante AS Importante
FROM forum_post LEFT OUTER JOIN forum_commenti ON forum_post.id = forum_commenti.Post
WHERE forum_post.Importante = 0
AND forum_post.Sezione = '".$_GET['id']."'
GROUP BY id, Nome, Messaggio, Sezione, Data, Utente, Chiuso, Importante
ORDER BY MData IS NOT NULL DESC, Data DESC
LIMIT $start, $per_page
這是查詢論壇;我試圖顯示數據的帖子順序。我想要的是:
- 如果帖子沒有回覆,請使用他自己的日期排序,或者使用該帖子的最後評論日期。 (其它信息是無用的)
我找了解決有關這樣的老問題,但它給了我問題時,我嘗試做這樣的:
ORDER BY MData IS NOT NULL DESC, Data ASC
它說:「參考‘MDATA’不支持(參考組功能)「。
我爲php函數使用該查詢。
查詢中涉及的表是:
- forum_post:包含論壇
- forum_commenti的所有職位:包含所有帖子的所有回信,用「後」作爲forum_post的外鍵
WHERE條件是查詢的無用點。
我給你舉個例子:
POST 1 |最後回覆的數據是19/12/2014 10:00:00,發佈的數據是2014年12月19日09:00:00 TAKE最後評論的數據
POST 2 |最後回覆的數據是NULL(hasen't得到回覆),發佈的數據是19/12/2014 08:00:00 TAKE數據的帖子
....... ... .... 等
現在我有類似的東西:
POST 1 | 19/12/2014 10:00:00
POST 2 | 19/12/2014 08:00:00
ORDER BY Data
謝謝大家的幫助。
不能使用類似於Oracle解碼的命令?如果現在採取最後的評論日期,否則採取發佈日期,給出相同的名稱,你可以通過它可能是 – 2014-12-19 08:04:31
我正在尋找類似的東西。我嘗試使用'ORDER BY WHEN',但警告仍在;我不能使用MData,這是SELECT(MAX)中使用的聚合函數的返回值。 – Mauri 2014-12-19 08:06:47
它不是那樣用的。做一個子查詢與if(http://stackoverflow.com/questions/4706100/mysql-equivalent-of-decode-function-in-oracle-and-intersystem-cache-database),但加載數據具有相同的名稱,而不是聚合,就像從數據desc限制1從myTable順序選擇數據,如果null採取的職位,等 – 2014-12-19 08:08:44