如何首先按FIELD排序,然后按字段ASC进行排序

时间:2017-03-07 13:13:10

标签: php sql

如何首先按FIELD排序,然后再按其他归档的ASC排序?我正在使用SQL查询来使用ajax请求动态列出项目" here"但是我在获得正确的订单时遇到了一些麻烦。

我想做这样的事情:

$variable = “6,7,8”;

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

但是我的列表按排名排序,最后排序。我希望首先获得所选id,然后通过“排名”获得其他记录。

这可能吗?

1 个答案:

答案 0 :(得分:1)

问题在于FIELD()在没有匹配时返回0。我建议您将值视为字符串(而不是将值填入IN列表)并使用find_in_set()

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

DESC是“true”值(被视为“1”)在“false”值(“0”)之前。

如果您关心列表中的排序,请添加另一个密钥:

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