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

จะดึงแถวสุ่มหรือหลายแถวสุ่มใน MySQL ได้อย่างไร


คุณสามารถใช้วิธี RAND() สำหรับสิ่งนี้ ในการดึงแถวแบบสุ่ม ให้ใช้ไวยากรณ์ต่อไปนี้

SELECT *FROM yourTableName ORDER BY RAND() LIMIT yourIntegerNumber;

เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้

mysql> สร้างตาราง getRandomRow -> ( -> CustomerId int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, -> CustomerName varchar(100) -> ); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.45 วินาที)

แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้ −

mysql> แทรกลงในค่า getRandomRow(CustomerName) ('Chris'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที)mysql> แทรกลงในค่า getRandomRow(CustomerName) ('Robert'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.10 วินาที) mysql> แทรกลงในค่า getRandomRow (ชื่อลูกค้า) ('Ramit'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า getRandomRow (ชื่อลูกค้า) ('James'); ตกลง ตกลง 1 แถวได้รับผลกระทบ ( 0.11 วินาที) mysql> แทรกลงในค่า getRandomRow (ชื่อลูกค้า) ('Jace'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.12 วินาที) mysql> แทรกลงในค่า getRandomRow (ชื่อลูกค้า) ('Mike'); ตกลง ตกลง 1 แถวได้รับผลกระทบ ( 0.15 วินาที) mysql> แทรกลงในค่า getRandomRow (ชื่อลูกค้า) ('Sam'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที) mysql> แทรกลงในค่า getRandomRow (ชื่อลูกค้า) ('Bob'); ตกลง ตกลง 1 แถวได้รับผลกระทบ ( 0.12 วินาที) mysql> แทรกลงในค่า getRandomRow (ชื่อลูกค้า) ('Carol'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.11 วินาที) mysql> แทรกลงในค่า getRandomRow (ชื่อลูกค้า) ('David'); ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที) mysql> แทรกลงในค่า getRandomRow (ชื่อลูกค้า) ('Maxwell'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที) mysql> แทรกลงในค่า getRandomRow (ชื่อลูกค้า) ('Larry'); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.13 วินาที) mysql> แทรกลงในค่า getRandomRow (ชื่อลูกค้า) ('John'); ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.11 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −

mysql> เลือก *จาก gettingRandomRow;

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+------------+--------------+| รหัสลูกค้า | ชื่อลูกค้า |+-----------+------------+| 1 | คริส || 2 | โรเบิร์ต || 3 | รมิท || 4 | เจมส์ || 5 | เจซ || 6 | ไมค์ || 7 | แซม || 8 | บ๊อบ || 9 | แครอล || 10 | เดวิด || 11 | แม็กซ์เวลล์ || 12 | แลร์รี่ || 13 | John |+------------+-------------+13 แถวในชุด (0.00 วินาที)

นี่คือแบบสอบถามเพื่อรับแถวสุ่มหรือหลายแถวสุ่ม

กรณีที่ 1 :แบบสอบถามมีดังนี้ −

mysql> เลือก *จาก gettingRandomRow เรียงลำดับตาม rand() LIMIT 1;

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+------------+--------------+| รหัสลูกค้า | ชื่อลูกค้า |+-----------+------------+| 13 | John |+-----------+--------------------- +1 แถวในชุด (0.00 วินาที)

กรณีที่ 2 :แบบสอบถามมีดังนี้ −

mysql> เลือก *จาก gettingRandomRow เรียงลำดับตาม rand() LIMIT 2;

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+------------+--------------+| รหัสลูกค้า | ชื่อลูกค้า |+-----------+------------+| 2 | โรเบิร์ต || 3 | Ramit |+------------+-------------+2 แถวในชุด (0.00 วินาที)

กรณีที่ 3 :แบบสอบถามมีดังนี้ −

mysql> เลือก *จาก gettingRandomRow เรียงลำดับตาม rand() LIMIT 2;

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+------------+--------------+| รหัสลูกค้า | ชื่อลูกค้า |+-----------+------------+| 4 | เจมส์ || 9 | Carol |+------------+-------------+2 แถวในชุด (0.00 วินาที)