Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Sắp xếp MySQL: Cố định một tên cụ thể lên đầu, phần còn lại ngẫu nhiên (RAND) với LIMIT

Tạo bảng tên

mysql> CREATE TABLE DemoTable1426 (FirstName VARCHAR(20));
INSERT INTO DemoTable1426 VALUES('John'),('Adam'),('Robert'),('David'),('Sam');

Dữ liệu

mysql> SELECT * FROM DemoTable1426;
+-----------+
| FirstName |
+-----------+
| John      |
| Adam      |
| Robert    |
| David     |
| Sam       |
+-----------+

Truy vấn: ORDER BY (FirstName='Robert') DESC, RAND() LIMIT 3

mysql> SELECT * FROM DemoTable1426
    -> ORDER BY (FirstName = 'Robert') DESC, RAND()
    -> LIMIT 3;

Kết quả: Robert luôn đầu, 2 hàng khác ngẫu nhiên

+-----------+
| FirstName |
+-----------+
| Robert    |
| Adam      |
| David     |
+-----------+

Giải thích: (FirstName = 'Robert') trả về 1 (true) cho Robert, 0 cho các hàng khác. DESC đặt 1 lên đầu. RAND() sắp xếp ngẫu nhiên cho các hàng cùng giá trị (0). LIMIT 3 lấy 3 hàng đầu.