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

แบบสอบถาม MySQL เพื่อเลือกหนึ่งแถวเฉพาะและอีกแถวสุ่ม?


ในการเลือกแถวเฉพาะและแถวสุ่มอีกแถว คุณสามารถใช้ ORDER BY และ RAND() ให้เราสร้างตารางตัวอย่างก่อน:

mysql> สร้างตาราง oneSpecificRowAndOtherRandom -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, -> Name varchar(20) -> );Query OK, 0 แถวได้รับผลกระทบ (0.72 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อแทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก:

mysql> แทรกลงในค่า oneSpecificRowAndOtherRandom(Name)('Larry');Query OK, 1 แถวได้รับผลกระทบ (0.56 วินาที)mysql> แทรกลงในค่า oneSpecificRowAndOtherRandom(Name)('Sam');Query OK, 1 แถวได้รับผลกระทบ ( 0.13 วินาที) mysql> แทรกลงในค่า oneSpecificRowAndOtherRandom(Name) ('Mike'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.12 วินาที) mysql> แทรกลงในค่า oneSpecificRowAndOtherRandom (ชื่อ) ('Carol'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.15 วินาที) mysql> แทรกลงในค่า oneSpecificRowAndOtherRandom(Name) ('Chris'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.21 วินาที) mysql> แทรกลงในค่า oneSpecificRowAndOtherRandom (ชื่อ) ('Bob'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.13 วินาที) mysql> แทรกลงในค่า oneSpecificRowAndOtherRandom(Name) ('David'); ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.13 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อแสดงระเบียนจากตารางโดยใช้คำสั่ง select:

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

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้

<ก่อนหน้า>+----+-------+| รหัส | ชื่อ |+---+-------+| 1 | แลร์รี่ || 2 | แซม || 3 | ไมค์ || 4 | แครอล || 5 | คริส || 6 | บ๊อบ || 7 | David |+----+-------+7 แถวในชุด (0.00 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อเลือกแถวเฉพาะและแถวสุ่มอื่น:

mysql> เลือก *จาก oneSpecificRowAndOtherRandom ORDER BY (Id=5) DESC, RAND() LIMIT 0,3;

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้

<ก่อนหน้า>+----+-------+| รหัส | ชื่อ |+---+-------+| 5 | คริส || 1 | แลร์รี่ || 2 | แซม |+----+-------+3 แถวในชุด (0.05 วินาที)

ให้เราเรียกใช้แบบสอบถามเดียวกันอีกครั้งเพื่อแสดงบันทึกแบบสุ่มเนื่องจากเราใช้ RAND():

mysql> เลือก *จาก oneSpecificRowAndOtherRandom ORDER BY (Id=5) DESC, RAND() LIMIT 0,3;

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้

<ก่อนหน้า>+----+-------+| รหัส | ชื่อ |+---+-------+| 5 | คริส || 2 | แซม || 4 | Carol |+----+-------+3 แถวในชุด (0.00 วินาที)