MySQL 如何通过使用 WHERE id
IN (…) 在 MySql 中指定准确的顺序
要使用 where id IN 指定准确的顺序,您需要使用 find_in_set() 函数。
语法如下。
SELECT *FROM yourTableName
WHERE yourColumnName IN (yourValue1,yourValue2,yourValue3,....N)
ORDER BY FIND_IN_SET(yourColumnName , ‘yourValue1,yourValue2,yourValue3,....N’');
首先让我们创建一个表。
mysql> create table FindInSetDemo
- > (
- > Id int,
- > Name varchar(20),
- > Age int
- > );
Query OK, 0 rows affected (0.54 sec)
使用 insert 命令将一些记录插入到表中。
查询如下。
mysql> insert into FindInSetDemo values(10,'John',23);
Query OK, 1 row affected (0.20 sec)
mysql> insert into FindInSetDemo values(1,'Carol',21);
Query OK, 1 row affected (0.17 sec)
mysql> insert into FindInSetDemo values(4,'Bob',25);
Query OK, 1 row affected (0.19 sec)
mysql> insert into FindInSetDemo values(6,'Sam',26);
Query OK, 1 row affected (0.15 sec)
mysql> insert into FindInSetDemo values(7,'Maxwell',29);
Query OK, 1 row affected (0.18 sec)
mysql> insert into FindInSetDemo values(8,'Mike',22);
Query OK, 1 row affected (0.13 sec)
mysql> insert into FindInSetDemo values(2,'David',27);
Query OK, 1 row affected (0.20 sec)
mysql> insert into FindInSetDemo values(3,'James',20);
Query OK, 1 row affected (0.20 sec)
使用 select 语句从表中显示所有记录。
查询如下。
mysql> select *from FindInSetDemo;
以下是输出结果。
+------+---------+------+
| Id | Name | Age |
+------+---------+------+
| 10 | John | 23 |
| 1 | Carol | 21 |
| 4 | Bob | 25 |
| 6 | Sam | 26 |
| 7 | Maxwell | 29 |
| 8 | Mike | 22 |
| 2 | David | 27 |
| 3 | James | 20 |
+------+---------+------+
8 rows in set (0.00 sec)
以下是使用 where id IN() 指定准确顺序的查询。
mysql> select *from FindInSetDemo
- > where Id IN (1,4,6,7)
- > order by FIND_IN_SET(Id, '1,4,6,7');
以下是输出结果。
+------+---------+------+
| Id | Name | Age |
+------+---------+------+
| 1 | Carol | 21 |
| 4 | Bob | 25 |
| 6 | Sam | 26 |
| 7 | Maxwell | 29 |
+------+---------+------+
4 rows in set (0.00 sec)
阅读更多:MySQL 教程