สามารถใช้ Subquery ร่วมกับ RAND() สำหรับการสุ่มข้อมูล และ ORDER BY สำหรับเรียงลำดับชื่อตามตัวอักษรได้ รูปแบบคำสั่ง:
select * from (
select * from yourTableName order by rand() limit anyIntegerValue;
) anyVariableName order by yourColumnName;
ตัวอย่างการใช้งาน
สร้างตารางตัวอย่าง:
mysql> create table OrderByRandName (
-> Id int,
-> Name varchar(100)
-> );
เพิ่มข้อมูล 10 เรคคอร์ด:
mysql> insert into OrderByRandName values(100,'John');
mysql> insert into OrderByRandName values(101,'Bob');
mysql> insert into OrderByRandName values(102,'Johnson');
mysql> insert into OrderByRandName values(103,'David');
mysql> insert into OrderByRandName values(104,'Smith');
mysql> insert into OrderByRandName values(105,'Taylor');
mysql> insert into OrderByRandName values(106,'Sam');
mysql> insert into OrderByRandName values(107,'Robert');
mysql> insert into OrderByRandName values(108,'Michael');
mysql> insert into OrderByRandName values(109,'Mark');
แสดงข้อมูลทั้งหมด:
mysql> select * from OrderByRandName;
คำสั่งสุ่มแล้วเรียงชื่อ A-Z
mysql> select * from (
-> select * from OrderByRandName order by rand() limit 10
-> ) tbl1
-> order by Name;
ผลลัพธ์ (ชื่อเรียงตามตัวอักษร):
+------+---------+
| Id | Name |
+------+---------+
| 101 | Bob |
| 103 | David |
| 100 | John |
| 102 | Johnson |
| 109 | Mark |
| 108 | Michael |
| 107 | Robert |
| 106 | Sam |
| 104 | Smith |
| 105 | Taylor |
+------+---------+
หมายเหตุ: Subquery ด้านในสุ่มข้อมูลก่อน (limit 10) แล้วค่อยนำผลลัพธ์ไปเรียงตามชื่อภายนอก