2017-03-07 103 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

谢谢!它工作完美 –