Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

จัดลำดับข้อมูล MySQL แบบสุ่ม แล้วเรียงชื่อตามอักษร

สามารถใช้ 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) แล้วค่อยนำผลลัพธ์ไปเรียงตามชื่อภายนอก