表结构如下:
mysql> select * from test;
+—-+——-+
| id | name |
+—-+——-+
| 1 | test1 |
| 2 | test2 |
| 3 | test3 |
| 4 | test4 |
| 5 | test5 |
+—-+——-+
执行以下SQL:
mysql> select * from test where id in(3,1,5);
+—-+——-+
| id | name |
+—-+——-+
| 1 | test1 |
| 3 | test3 |
| 5 | test5 |
+—-+——-+
3 rows in set (0.00 sec)
这个select在mysql中得结果会自动按照id升序排列,
但是我想执行”select * from test where id in(3,1,5);”的结果按照in中得条件排序,即:3,1,5,想得到的结果如下:
id name
3 test3
1 test1
5 test5
方法如下:
select * from test where id in(3,1,5) order by find_in_set(id,’3,1,5′);
select * from test where id in(3,1,5) order by substring_index(‘3,1,2′,id,1);
两者均可
转自:http://www.qmay.cn/?p=291