2017-03-07 81 views
1

如何先按字段和其他歸檔的ASC排序?我正在處理一個SQL查詢以動態列出項目與ajax請求「here」,但我有一些麻煩得到正確的順序。如何先按字段和其他字段ASC排序

我想要做這樣的事情:

$variable = 「6,7,8」; 

SELECT * FROM table WHERE id > 5 ORDER BY FIELD(id, $variable), ranking ASC. 

但是我的名單得到由排名第一的排序,並在IDS持續。我想通過下面的「排名」得到選定的ID的第一個,然後其他記錄。

這可能嗎?

+1

添加一些樣本表數據和預期的結果 - 以及格式化文本。 – jarlh

回答

1

問題是當沒有匹配時FIELD()返回0。我woudl建議你把值作爲字符串(而不是壓抑到IN列表中的值),並使用find_in_set()

ORDER BY (FIND_IN_SET(id, $variable) > 0) DESC, 
     ranking ASC 

DESC是如此的「真」值(這被視爲「1」)在「假」值(「0」)之前。

如果你關心你的列表中的排序,然後包括另一個關鍵:

ORDER BY (FIND_IN_SET(id, $variable) > 0) DESC, 
     FIND_IN_SET(id, $variable), 
     ranking ASC 
+0

謝謝!它工作完美 –