Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL sắp xếp theo một số danh sách

Kể từ 1 < 3 < 77 < 123 , một ORDER BY id đơn giản là đủ.

Tuy nhiên, nếu bạn muốn đặt hàng theo cách này:77, 3, 123, 1 thì bạn có thể sử dụng hàm FIELD() :

SELECT id, name
FROM mytable 
WHERE id IN (77, 3, 123, 1) 
ORDER BY FIELD(id, 77, 3, 123, 1)

Nếu truy vấn của bạn khớp với nhiều hàng hơn bạn liệt kê trong FIELD

FIELD trả về 0 khi một hàng không khớp với bất kỳ id nào bạn liệt kê, tức là một số nhỏ hơn các số được trả về cho các id được liệt kê. Điều này có nghĩa là, nếu truy vấn của bạn khớp với nhiều hàng hơn những hàng bạn liệt kê, thì những hàng đó sẽ xuất hiện đầu tiên. Ví dụ:

SELECT id, name
FROM mytable 
WHERE id IN (77, 3, 123, 1, 400) 
ORDER BY FIELD(id, 77, 3, 123, 1)

Trong ví dụ này, hàng có ID 400 sẽ xuất hiện đầu tiên. Nếu bạn muốn những hàng đó xuất hiện cuối cùng, chỉ cần đảo ngược danh sách ID và thêm DESC :

SELECT id, name
FROM mytable 
WHERE id IN (77, 3, 123, 1, 400) 
ORDER BY FIELD(id, 1, 123, 3, 77) DESC



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. OperationalError:(2002, Không thể kết nối với máy chủ MySQL cục bộ thông qua socket '/var/run/mysqld/mysqld.sock' (2))

  2. Tạo tập lệnh đăng nhập an toàn trong PHP và MySQL mà không cần HTTPS

  3. phpMyBackupPro - Công cụ sao lưu MySQL dựa trên web dành cho Linux

  4. Chuyển các bảng MySQL sang JSON với Golang

  5. Làm cách nào để thay đổi tiền tố trong tất cả các bảng trong MySQL DB của tôi?