MySQL วิธี select ข้อมูล แบบ random แถวข้อมูล

MySQL-วิธี-select-ข้อมูลแบบ-random-แถวข้อมูล
MySQL-วิธี-select-ข้อมูลแบบ-random-แถวข้อมูล

ในคำสั่ง MySQL วิธี select ข้อมูล กรณีที่เราต้องการ select หรือดึงข้อมูลขึ้นมาแสดงผล แบบให้มีการแรนดอม ไม่ต้องจัดเรียงข้อมูล เราสามารถใช้คำสั่ง rand() ในส่วนของ order by ได้

ตัวอย่งเช่น เราต้องการดึงข้อมูลร้านค้า จำนวน 10 ร้านขึ้นมาแสดงผล โดยไม่ต้องการให้เรียงร้านตามข้อมูลใด ๆ สามารถเขียนคำสั่งได้ดังนี้

SELECT store_name FROM store ORDER BY rand() LIMIT 10

หรืออีกวิธีหนึ่ง กรณีที่เราต้องการดึงข้อมูลร้านค้าจำนวน 10 ร้านค้าขึ้นมาแสดง โดยร้านค้าทั้ง 10 ร้านนั้น ต้องเป็นร้านค้าล่าสุด แต่ไม่ต้องการให้เรียงลำดับตามวันเวลาเปิดร้าน ก็ใช้คำสั่ง shuffle ใน PHP เข้ามาช่วย แทนที่จะใช้คำสั่ง rand() ใน MySQL ตัวอย่างเช่น

$sql = "SELECT store_name FROM store ORDER BY timestamp DESC LIMIT 10";
$result = $conn->query($sql);
shuffle($result);

เริ่มต้นคือ select ข้อมูลขึ้นมา 10 row ก่อน โดยให้เรียงจากวันเวลาล่าสุดที่เพิ่มข้อมูลเข้าไป จากนั้นใช้คำสั่ง shuffle ในการแรนดอมการจัดเรียงตำแหน่งของข้อมูลภายใน Array

ผลลัพธ์ที่ได้คือ ข้อมูลที่แสดงผลทุกครั้ง จะมาจากข้อมูล 10 row ล่าสุด แต่มีตำแหน่งของข้อมูลที่ไม่เหมือนกันทุกครั้ง

สำหรับใน codeigniter framework เราสามารถเขียนได้ดังนี้ครับ

$this->db->select("store_name");
$this->db->from("store");
$this->db->order_by("rand()");
$this->db->limit(10);

Leave a Reply