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

MySQL - SELECT… WHERE id IN (..) thứ tự với cột cụ thể?

Bạn có thể CHỌN… .WHERE id IN (..) bằng cách sử dụng hàm field () để sắp xếp với bất kỳ cột nào. Cú pháp như sau -

SELECT *FROM yourTableName WHERE yourColumnName IN(‘value1’,’value2’,.......N)
ORDER BY FIELD(yourColumnName,value1’,’value2’,.......N);

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

mysql> create table SelectOrderbyField
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> Name varchar(30),
   -> Age int,
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.62 sec)

Chèn một số bản ghi trong bảng bằng lệnh chèn. Truy vấn như sau -

mysql> insert into SelectOrderbyField(Name,Age) values('John',23);
Query OK, 1 row affected (0.13 sec)

mysql> insert into SelectOrderbyField(Name,Age) values('Carol',25);
Query OK, 1 row affected (0.16 sec)

mysql> insert into SelectOrderbyField(Name,Age) values('Bob',21);
Query OK, 1 row affected (0.15 sec)

mysql> insert into SelectOrderbyField(Name,Age) values('Mike',28);
Query OK, 1 row affected (0.17 sec)

mysql> insert into SelectOrderbyField(Name,Age) values('Sam',26);
Query OK, 1 row affected (0.12 sec)

mysql> insert into SelectOrderbyField(Name,Age) values('David',23);
Query OK, 1 row affected (0.19 sec)

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau -

mysql> select *from SelectOrderbyField;

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

+----+-------+------+
| Id | Name  | Age  |
+----+-------+------+
|  1 | John  |   23 |
|  2 | Carol |   25 |
|  3 | Bob   |   21 |
|  4 | Mike  |   28 |
|  5 | Sam   |   26 |
|  6 | David | 23   |
+----+-------+------+
6 rows in set (0.00 sec)

Đây là các truy vấn để chọn ... nơi có id trong (..) bằng cách sử dụng hàm order by field ().

Đặt hàng với cột ID

Truy vấn như sau -

mysql> select *from SelectOrderbyField where Id IN(5,1,3,2,6,4)
   -> order by field(Id,5,1,3,2,6,4);

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

+----+-------+------+
| Id | Name  | Age  |
+----+-------+------+
|  5 | Sam   |   26 |
|  1 | John  |   23 |
|  3 | Bob   |   21 |
|  2 | Carol |   25 |
|  6 | David |   23 |
|  4 | Mike  | 28   |
+----+-------+------+
6 rows in set (0.00 sec)

Đặt hàng với cột Tên

Bạn có thể đặt hàng chính xác trên cơ sở cột Tên. Truy vấn như sau -

mysql> select *from SelectOrderbyField where Name IN('Sam','John','Bob','Carol','David','Mike')
   -> order by field(Name,'Sam','John','Bob','Carol','David','Mike');

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

+----+-------+------+
| Id | Name  | Age  |
+----+-------+------+
| 5  | Sam   | 26   |
| 1  | John  | 23   |
| 3  | Bob   | 21   |
| 2  | Carol | 25   |
| 6  | David | 23   |
| 4  | Mike  | 28   |
+----+-------+------+
6 rows in set (0.03 sec)