如何首先按FIELD排序,然后再按其他归档的ASC排序?我正在使用SQL查询来使用ajax请求动态列出项目" here"但是我在获得正确的订单时遇到了一些麻烦。
我想做这样的事情:
$variable = “6,7,8”;
SELECT * FROM table WHERE id > 5 ORDER BY FIELD(id, $variable), ranking ASC.
但是我的列表按排名排序,最后排序。我希望首先获得所选id,然后通过“排名”获得其他记录。
这可能吗?
答案 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