个人官方网站:老司机撩Java
在MySQL中,select * from table_name where id in ()或者select * from table_name where find_in_set()的时候,结果不是按给定集合的顺序排序的。
因为MYSQL默认会按主键(id)在表中出现的位置自然排序。那么如果需要查询结果按指定顺序来排序,要如何实现呢?
实现方式:对结果加上排序,即 order by FIND_IN_SET()。
具体实现如下:
使in按顺序查出来:
select ID from IndexData where Type=2 and id in(2,4,1,3) order by FIND_IN_SET(id,'2,4,1,3');
使find_in_set按顺序查出来:
select ID from IndexData where Type=2 and FIND_IN_SET(id,'2,4,1,3') order by FIND_IN_SET(id,'2,4,1,3');