Computer >> Máy Tính >  >> Lập trình >> MySQL

Duy trì thứ tự trong truy vấn MySQL “IN”?


Bạn có thể duy trì thứ tự trong truy vấn MySQL IN với sự trợ giúp của lệnh trường. Cú pháp như sau -

select *from yourTableName anyVariableName where anyVariableName.yourColumnName in(value1,value2,......N)
order by field(anyVariableName.yourColumnName,value1,value2,......N);

Để triển khai cú pháp trên, chúng ta hãy tạo một bảng -

mysql> create table OrderInDemo
   −> (
      −> Id int,
      −> Name varchar(100),
      −> Age int
   −> );
Query OK, 0 rows affected (1.24 sec)

Bây giờ chúng ta hãy chèn một số bản ghi vào bảng. Truy vấn để chèn bản ghi như sau -

mysql> insert into OrderInDemo values(90,'David',23);
Query OK, 1 row affected (0.10 sec)

mysql> insert into OrderInDemo values(9,'Sam',24);
Query OK, 1 row affected (0.59 sec)

mysql> insert into OrderInDemo values(10,'Carol',19);
Query OK, 1 row affected (0.25 sec)

mysql> insert into OrderInDemo values(1,'John',26);
Query OK, 1 row affected (0.42 sec)

mysql> insert into OrderInDemo values(3,'Johnson',25);
Query OK, 1 row affected (0.18 sec)

mysql> insert into OrderInDemo values(2,'Ramit',20);
Query OK, 1 row affected (0.18 sec)

Hiển thị tất cả các bản ghi với sự trợ giúp của câu lệnh select. Truy vấn như sau -

mysql> select *from OrderInDemo;

Sau đây là kết quả -

+------+---------+------+
| Id   | Name    | Age  |
+------+---------+------+
|   90 | David   |   23 |
|    9 | Sam     |   24 |
|   10 | Carol   |   19 |
|    1 | John    |   26 |
|    3 | Johnson |   25 |
|    2 | Ramit   |   20 |
+------+---------+------+
6 rows in set (0.00 sec)

Thực hiện cú pháp mà chúng ta đã thảo luận ở phần đầu, để duy trì trật tự trong truy vấn MySQL IN. Truy vấn như sau -

mysql> select *from OrderInDemo OD where OD.Id in(10,1,3)
   −> order by field(OD.Id,10,1,3);

Sau đây là đầu ra hiển thị các kết quả được sắp xếp theo trình tự được cung cấp trong truy vấn -

+------+---------+------+
| Id   | Name    | Age  |
+------+---------+------+
|   10 | Carol   |   19 |
|    1 | John    |   26 |
|    3 | Johnson |   25 |
+------+---------+------+
3 rows in set (0.00 sec)