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

ฉันจะเลือกแถวสุ่ม 5 แถวจาก 20 แถวล่าสุดใน MySQL ได้อย่างไร


สำหรับการสุ่ม ให้ใช้เมธอด RAND() และสำหรับการจำกัดแถว ให้ใช้เมธอด LIMIT()

ให้เราสร้างตารางก่อน -

mysql> สร้างตาราง DemoTable -> ( -> ShippingDate datetime -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.51 วินาที)

แทรกระเบียนบางส่วนในตารางโดยใช้คำสั่ง insert -

mysql> แทรกลงในค่า DemoTable ('2019-01-01'); Query OK, 1 แถวได้รับผลกระทบ (0.11 วินาที)mysql> แทรกลงในค่า DemoTable ('2019-01-03'); Query OK, 1 แถว ได้รับผลกระทบ (0.14 วินาที) mysql> แทรกลงในค่า DemoTable ('2019-01-05'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.13 วินาที) mysql> แทรกลงในค่า DemoTable ('2019-01-07'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.11 วินาที) mysql> แทรกลงในค่า DemoTable ('2019-02-02'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า DemoTable ('2019-02-04'); แบบสอบถาม ตกลง ได้รับผลกระทบ 1 แถว (0.14 วินาที)mysql> แทรกลงในค่า DemoTable ('2019-02-12'); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.07 วินาที) mysql> แทรกลงในค่า DemoTable ('2019-02-24');แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที)mysql> แทรกลงในค่า DemoTable ('2019-02-25'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.11 วินาที) mysql> แทรกลงในค่า DemoTable ('2019-03-10 ');แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที)mysql> แทรกลงในค่า DemoTable ('2019-03-11'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.11 วินาที) mysql> แทรกลงในค่า DemoTable ('2019-03 -12'); ตกลง, 1 แถวได้รับผลกระทบ (0.10 วินาที) mysql> แทรกลงในค่า DemoTable ('2019-03-14'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.11 วินาที) mysql> แทรกลงในค่า DemoTable ('2019-03-16'); แบบสอบถาม ตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า DemoTable ('2019-03-18'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที) mysql> แทรกลงในค่า DemoTable ('2019-03-20');แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที)mysql> แทรกลงในค่า DemoTable ('2019-03-25'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที) mysql> แทรกลงในค่า DemoTable ('2019-03-28 '); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า DemoTable ('2019-03-29'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที) mysql> แทรกลงในค่า DemoTable ('2019-04 -03'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที) mysql> แทรกลงในค่า DemoTable ('2019-04-03'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.13 วินาที) mysql> แทรกลงในค่า DemoTable ('2019 -04-04'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที) mysql> แทรกลงในค่า DemoTable ('2019-04-06'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที) mysql> แทรกลงในค่า DemoTable ( '201 9-04-09'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า DemoTable ('2019-05-01'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.23 วินาที) mysql> แทรกลงในค่า DemoTable ('2019-05-13'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.24 วินาที) mysql> แทรกลงในค่า DemoTable ('2019-05-15'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงใน ค่า DemoTable ('2019-05-16'); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.16 วินาที) mysql> แทรกลงในค่า DemoTable ('2019-05-18'); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.20 วินาที) 

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

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

ผลลัพธ์

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

<ก่อนหน้า>+---------------------+| วันที่จัดส่ง |+--------------------+| 2019-01-01 00:00:00 || 2019-01-03 00:00:00 || 2019-01-05 00:00:00 || 2019-01-07 00:00:00 || 2019-02-02 00:00:00 || 2019-02-04 00:00:00 || 2019-02-12 00:00:00 || 2019-02-24 00:00:00 || 2019-02-25 00:00:00 || 2019-03-10 00:00:00 || 2019-03-11 00:00:00 || 2019-03-12 00:00:00 || 2019-03-14 00:00:00 || 2019-03-16 00:00:00 || 2019-03-18 00:00:00 || 2019-03-20 00:00:00 || 2019-03-25 00:00:00 || 2019-03-28 00:00:00 || 2019-03-29 00:00:00 || 2019-04-03 00:00:00 || 2019-04-03 00:00:00 || 2019-04-04 00:00:00 || 2019-04-06 00:00:00 || 2019-04-09 00:00:00 || 2019-05-01 00:00:00 || 2019-05-13 00:00:00 || 2019-05-15 00:00:00 || 2019-05-16 00:00:00 || 2019-05-18 00:00:00 |+----------------------+29 แถวในชุด (0.00 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อเลือก 5 แถวสุ่มจาก 20 แถวล่าสุด -

mysql> เลือก tbl1.* จาก (เลือก *จาก DemoTable ORDER BY ShippingDate DESC LIMIT 20 ) เป็น tbl1 -> ORDER BY RAND() LIMIT 5;

ผลลัพธ์

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

<ก่อนหน้า>+---------------------+| วันที่จัดส่ง |+--------------------+| 2019-03-14 00:00:00 || 2019-05-13 00:00:00 || 2019-03-25 00:00:00 || 2019-05-16 00:00:00 || 2019-03-10 00:00:00 |+---------------------+5 แถวในชุด (0.04 วินาที)