เพื่อสุ่มเลือกแถวข้อมูล (random row) จากตาราง MySQL สามารถใช้ฟังก์ชัน RAND() ร่วมกับ ORDER BY และ LIMIT 1
ตัวอย่างการสร้างตาราง
mysql> create table DemoTable (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientName varchar(100),
ClientAge int );
Query OK, 0 rows affected (0.92 sec)
เพิ่มข้อมูลตัวอย่าง
mysql> insert into DemoTable(ClientName,ClientAge) values('Robert',45);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(ClientName,ClientAge) values('Mike',55);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(ClientName,ClientAge) values('Bob',42);
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable(ClientName,ClientAge) values('Sam',47);
Query OK, 1 row affected (0.11 sec)
แสดงข้อมูลทั้งหมด
mysql> select * from DemoTable;
+----+------------+-----------+ | Id | ClientName | ClientAge | +----+------------+-----------+ | 1 | Robert | 45 | | 2 | Mike | 55 | | 3 | Bob | 42 | | 4 | Sam | 47 | +----+------------+-----------+ 4 rows in set (0.00 sec)
คำสั่งสุ่มเลือก 1 แถว
mysql> select * from DemoTable order by rand() limit 1;
ผลลัพธ์ตัวอย่าง (จะเปลี่ยนไปทุกครั้งที่รัน)
+----+------------+-----------+ | Id | ClientName | ClientAge | +----+------------+-----------+ | 3 | Bob | 42 | +----+------------+-----------+ 1 row in set (0.00 sec)
คำเตือนประสิทธิภาพ: ORDER BY RAND() อาจช้าสำหรับตารางขนาดใหญ่ เพราะต้องสร้างค่าสุ่มสำหรับทุกแถว สำหรับตารางใหญ่ แนะนำวิธีอื่น เช่น สุ่มค่า Primary Key ก่อน แล้วค่อย SELECT WHERE Id = ค่าที่สุ่มได้