Come ho spiegato in questo articolo , per mescolare il set di risultati SQL, è necessario utilizzare una chiamata di funzione specifica del database.
Si noti che l'ordinamento di un set di risultati di grandi dimensioni utilizzando una funzione RANDOM potrebbe rivelarsi molto lento, quindi assicurarsi di farlo su set di risultati di piccole dimensioni.
Se devi mescolare un set di risultati di grandi dimensioni e limitarlo in seguito, è meglio usare qualcosa come OracleSAMPLE(N)
o TABLESAMPLE
in SQL Server o PostgreSQL invece di una funzione casuale nella clausola ORDER BY.
Quindi, supponendo che abbiamo la seguente tabella di database:
E le seguenti righe nella song
tabella:
| 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 |
Oracolo
Su Oracle, è necessario utilizzare la DBMS_RANDOM.VALUE
funzione, come illustrato dal seguente esempio:
SELECT
artist||' - '||title AS song
FROM song
ORDER BY DBMS_RANDOM.VALUE
Quando eseguiamo la suddetta query SQL su Oracle, otteniamo il seguente set di risultati:
| 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 |
Si noti che i brani vengono elencati in ordine casuale, grazie alla DBMS_RANDOM.VALUE
chiamata di funzione utilizzata dalla clausola ORDER BY.
server SQL
Su SQL Server, è necessario utilizzare la NEWID
funzione, come illustrato dal seguente esempio:
SELECT
CONCAT(CONCAT(artist, ' - '), title) AS song
FROM song
ORDER BY NEWID()
Quando eseguiamo la suddetta query SQL su SQL Server, otteniamo il seguente set di risultati:
| 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) |
Si noti che i brani vengono elencati in ordine casuale, grazie alla NEWID
chiamata di funzione utilizzata dalla clausola ORDER BY.
PostgreSQL
Su PostgreSQL, è necessario utilizzare la random
funzione, come illustrato dal seguente esempio:
SELECT
artist||' - '||title AS song
FROM song
ORDER BY random()
Quando eseguiamo la suddetta query SQL su PostgreSQL, otteniamo il seguente set di risultati:
| 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 |
Si noti che i brani vengono elencati in ordine casuale, grazie alla random
chiamata di funzione utilizzata dalla clausola ORDER BY.
MySQL
Su MySQL, è necessario utilizzare la RAND
funzione, come illustrato dal seguente esempio:
SELECT
CONCAT(CONCAT(artist, ' - '), title) AS song
FROM song
ORDER BY RAND()
Quando eseguiamo la suddetta query SQL su MySQL, otterremo il seguente set di risultati:
| 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 |
Si noti che i brani vengono elencati in ordine casuale, grazie alla RAND
chiamata di funzione utilizzata dalla clausola ORDER BY.