如何基于给定值对数据进行优先级排序

时间:2019-11-19 12:00:48

标签: php mysql

嗨,有没有一种方法可以按sql结果的优先级排序?

示例我有一个$_POST['city_id']请求,其值为25,而我的表中有city_id行,1,{ {1}},234

当我使用以下示例查询时:

5

我可以按SELECT * FROM table_name WHERE status = 0 ORDER BY city_id ASC 的顺序获得25134的结果。

2 个答案:

答案 0 :(得分:3)

您可以根据值是否在数组中(使用IN表达式)然后通过city_id进行排序:

SELECT * 
FROM table_name 
WHERE status = 0 
ORDER BY city_id IN (2, 5) DESC, city_id ASC

Demo on dbfiddle

答案 1 :(得分:0)

您可以使用`ORDER BY FIELD``

SELECT * FROM table_name WHERE status = 0 ORDER BY FIELD(city_id, 5,2) DESC, city_id ASC

请注意,如果所选项目的顺序很重要,则必须在FIELD函数中使用相反的顺序。