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

Sắp xếp ngẫu nhiên và hiển thị tên theo thứ tự tăng dần trong MySQL

Sắp xếp ngẫu nhiên rồi sắp tên tăng dần

Để lấy một tập mẫu ngẫu nhiên từ bảng rồi sắp xếp kết quả theo tên (A-Z), bạn sử dụng truy vấn con (subquery) với ORDER BY RAND() và LIMIT, sau đó sắp xếp lại bên ngoài.

Cú pháp

SELECT * FROM (
    SELECT * FROM tenBang ORDER BY RAND() LIMIT soLuong
) AS bangTam ORDER BY tenCot;

Ví dụ minh họa

Tạo bảng OrderByRandName:

CREATE TABLE OrderByRandName (
    Id INT,
    Name VARCHAR(100)
);

Chèn 10 bản ghi:

INSERT INTO OrderByRandName VALUES
(100,'John'), (101,'Bob'), (102,'Johnson'), (103,'David'),
(104,'Smith'), (105,'Taylor'), (106,'Sam'), (107,'Robert'),
(108,'Michael'), (109,'Mark');

Truy vấn lấy 10 bản ghi ngẫu nhiên rồi sắp tên A-Z:

SELECT * FROM (
    SELECT * FROM OrderByRandName ORDER BY RAND() LIMIT 10
) AS tbl1 ORDER BY Name;

Kết quả mẫu

+------+---------+
| Id   | Name    |
+------+---------+
|  101 | Bob     |
|  103 | David   |
|  100 | John    |
|  102 | Johnson |
|  109 | Mark    |
|  108 | Michael |
|  107 | Robert  |
|  106 | Sam     |
|  104 | Smith   |
|  105 | Taylor  |
+------+---------+

Lưu ý hiệu năng: ORDER BY RAND() có thể chậm trên bảng lớn do phải quét toàn bộ bảng. Với dữ liệu lớn, hãy cân nhắc các phương pháp tối ưu như lấy ID ngẫu nhiên trước.