ดังที่ฉันได้อธิบายไว้ในบทความนี้เพื่อที่จะสลับชุดผลลัพธ์ SQL คุณต้องใช้การเรียกฟังก์ชันเฉพาะฐานข้อมูล
โปรดทราบว่าการเรียงชุดผลลัพธ์ขนาดใหญ่โดยใช้ฟังก์ชั่น RANDOM อาจกลายเป็นช้ามากดังนั้นโปรดตรวจสอบให้แน่ใจว่าคุณใช้ชุดผลลัพธ์ขนาดเล็ก
หากคุณต้องสับเปลี่ยนชุดผลลัพธ์ขนาดใหญ่และ จำกัด ในภายหลังจากนั้นควรใช้บางอย่างเช่นOracleSAMPLE(N)
หรือTABLESAMPLE
ในSQL ServerหรือPostgreSQLแทนฟังก์ชันแบบสุ่มในข้อ ORDER BY
ดังนั้นสมมติว่าเรามีตารางฐานข้อมูลต่อไปนี้:
และแถวต่อไปนี้ในsong
ตาราง:
| id | artist | title |
|----|---------------------------------|------------------------------------|
| 1 | Miyagi & Эндшпиль ft. Рем Дигга | I Got Love |
| 2 | HAIM | Don't Save Me (Cyril Hahn Remix) |
| 3 | 2Pac ft. DMX | Rise Of A Champion (GalilHD Remix) |
| 4 | Ed Sheeran & Passenger | No Diggity (Kygo Remix) |
| 5 | JP Cooper ft. Mali-Koa | All This Love |
คำพยากรณ์
บน Oracle คุณต้องใช้DBMS_RANDOM.VALUE
ฟังก์ชันดังแสดงในตัวอย่างต่อไปนี้:
SELECT
artist||' - '||title AS song
FROM song
ORDER BY DBMS_RANDOM.VALUE
เมื่อเรียกใช้แบบสอบถาม SQL ดังกล่าวบน Oracle เราจะได้รับชุดผลลัพธ์ต่อไปนี้:
| song |
|---------------------------------------------------|
| JP Cooper ft. Mali-Koa - All This Love |
| 2Pac ft. DMX - Rise Of A Champion (GalilHD Remix) |
| HAIM - Don't Save Me (Cyril Hahn Remix) |
| Ed Sheeran & Passenger - No Diggity (Kygo Remix) |
| Miyagi & Эндшпиль ft. Рем Дигга - I Got Love |
ขอให้สังเกตว่าเพลงนั้นอยู่ในลำดับแบบสุ่มต้องขอบคุณDBMS_RANDOM.VALUE
ฟังก์ชันการโทรที่ใช้โดยส่วนคำสั่ง ORDER BY
เซิร์ฟเวอร์ SQL
บน SQL Server คุณต้องใช้NEWID
ฟังก์ชันดังแสดงในตัวอย่างต่อไปนี้:
SELECT
CONCAT(CONCAT(artist, ' - '), title) AS song
FROM song
ORDER BY NEWID()
เมื่อเรียกใช้แบบสอบถาม SQL ดังกล่าวบน SQL Server เราจะได้รับชุดผลลัพธ์ต่อไปนี้:
| song |
|---------------------------------------------------|
| Miyagi & Эндшпиль ft. Рем Дигга - I Got Love |
| JP Cooper ft. Mali-Koa - All This Love |
| HAIM - Don't Save Me (Cyril Hahn Remix) |
| Ed Sheeran & Passenger - No Diggity (Kygo Remix) |
| 2Pac ft. DMX - Rise Of A Champion (GalilHD Remix) |
ขอให้สังเกตว่าเพลงนั้นอยู่ในลำดับแบบสุ่มต้องขอบคุณNEWID
ฟังก์ชันการโทรที่ใช้โดยส่วนคำสั่ง ORDER BY
PostgreSQL
บน PostgreSQL คุณต้องใช้random
ฟังก์ชันดังแสดงในตัวอย่างต่อไปนี้:
SELECT
artist||' - '||title AS song
FROM song
ORDER BY random()
เมื่อเรียกใช้คิวรี SQL ดังกล่าวข้างต้นบน PostgreSQL เราจะได้รับชุดผลลัพธ์ต่อไปนี้:
| song |
|---------------------------------------------------|
| 2Pac ft. DMX - Rise Of A Champion (GalilHD Remix) |
| JP Cooper ft. Mali-Koa - All This Love |
| Ed Sheeran & Passenger - No Diggity (Kygo Remix) |
| HAIM - Don't Save Me (Cyril Hahn Remix) |
| Miyagi & Эндшпиль ft. Рем Дигга - I Got Love |
ขอให้สังเกตว่าเพลงนั้นอยู่ในลำดับแบบสุ่มต้องขอบคุณrandom
ฟังก์ชันการโทรที่ใช้โดยส่วนคำสั่ง ORDER BY
MySQL
บน MySQL คุณจำเป็นต้องใช้RAND
ฟังก์ชั่นดังที่แสดงในตัวอย่างต่อไปนี้:
SELECT
CONCAT(CONCAT(artist, ' - '), title) AS song
FROM song
ORDER BY RAND()
เมื่อรันเคียวรี SQL ดังกล่าวบน MySQL เราจะได้ชุดผลลัพธ์ต่อไปนี้:
| song |
|---------------------------------------------------|
| HAIM - Don't Save Me (Cyril Hahn Remix) |
| Ed Sheeran & Passenger - No Diggity (Kygo Remix) |
| Miyagi & Эндшпиль ft. Рем Дигга - I Got Love |
| 2Pac ft. DMX - Rise Of A Champion (GalilHD Remix) |
| JP Cooper ft. Mali-Koa - All This Love |
ขอให้สังเกตว่าเพลงนั้นอยู่ในลำดับแบบสุ่มต้องขอบคุณRAND
ฟังก์ชันการโทรที่ใช้โดยส่วนคำสั่ง ORDER BY