mysql数据库
具体查询如下:SELECT*FROM tableNameWHERE id IN(1799 , 63323849672846 , 13 , 161 , 926221118 , 124571 , 55434 , 9297877807)查询的结果和in中的顺序并不一致,也就是说在批量查询时,mysql的查询并不是按照in中的值得顺序来查询的。那怎么才能保证和in查询中的顺序相同呢?查询了资料发现有两种方式可以对in查询的结果进行排序。一种是order by find_in_set,另外一种是order by substring_index
看第一种方式:SELECT*FROM tableName WHERE id IN(1799 , 63323849672846 , 13 , 161 , 926221118 , 124571 , 55434 , 9297877807)ORDER BY FIND_IN_SET(poi_id,'1799 , 63323849672846 , 13 , 161 , 926221118 , 367740002 , 55434 , 929787')这种方式有个问题,就是order by FIND_IN_SET的''中的字段前面不能有空格,如果有空格是不会生效的,像我的这个例子中的就因为有空格而不能正常排序。所以使用的时候要特别注意。
第二种方法:SELECT*FROM tableName WHERE order by substring_index('1799 , 63323849672846 , 13 , 161 , 926221118 , 367740002 , 55434 , 929787',id,1);两种方式都能解决in查询的顺序问题。但是第一种方法如果不小心加了多余的空格就会有问题,所以一定要小心使用。
推荐工具:workbench-》mysql自带的客户端图形界面,navicat。用过的都知道
不同版本可能有区别