Wie in diesem Artikel erläutert , müssen Sie zum Mischen der SQL-Ergebnismenge einen datenbankspezifischen Funktionsaufruf verwenden.
Beachten Sie, dass sich das Sortieren einer großen Ergebnismenge mithilfe einer RANDOM-Funktion als sehr langsam herausstellen kann. Stellen Sie daher sicher, dass Sie dies bei kleinen Ergebnismengen tun.
Wenn Sie eine große Ergebnismenge mischen und anschließend einschränken müssen, ist es besser, etwas wie OracleSAMPLE(N) oder TABLESAMPLEin SQL Server oder PostgreSQL anstelle einer Zufallsfunktion in der ORDER BY-Klausel zu verwenden.
Angenommen, wir haben die folgende Datenbanktabelle:

Und die folgenden Zeilen in der songTabelle:
| 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 |
Orakel
Unter Oracle müssen Sie die DBMS_RANDOM.VALUEFunktion verwenden, wie im folgenden Beispiel dargestellt:
SELECT
artist||' - '||title AS song
FROM song
ORDER BY DBMS_RANDOM.VALUE
Wenn Sie die oben genannte SQL-Abfrage unter Oracle ausführen, erhalten Sie die folgende Ergebnismenge:
| 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 |
Beachten Sie, dass die Songs dank des DBMS_RANDOM.VALUEvon der ORDER BY-Klausel verwendeten Funktionsaufrufs in zufälliger Reihenfolge aufgelistet werden .
SQL Server
Unter SQL Server müssen Sie die NEWIDFunktion verwenden, wie im folgenden Beispiel dargestellt:
SELECT
CONCAT(CONCAT(artist, ' - '), title) AS song
FROM song
ORDER BY NEWID()
Wenn Sie die oben genannte SQL-Abfrage unter SQL Server ausführen, erhalten Sie die folgende Ergebnismenge:
| 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) |
Beachten Sie, dass die Songs dank des NEWIDvon der ORDER BY-Klausel verwendeten Funktionsaufrufs in zufälliger Reihenfolge aufgelistet werden .
PostgreSQL
Unter PostgreSQL müssen Sie die randomFunktion verwenden, wie im folgenden Beispiel dargestellt:
SELECT
artist||' - '||title AS song
FROM song
ORDER BY random()
Wenn Sie die oben genannte SQL-Abfrage unter PostgreSQL ausführen, erhalten Sie die folgende Ergebnismenge:
| 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 |
Beachten Sie, dass die Songs dank des randomvon der ORDER BY-Klausel verwendeten Funktionsaufrufs in zufälliger Reihenfolge aufgelistet werden .
MySQL
Unter MySQL müssen Sie die RANDFunktion verwenden, wie im folgenden Beispiel dargestellt:
SELECT
CONCAT(CONCAT(artist, ' - '), title) AS song
FROM song
ORDER BY RAND()
Wenn Sie die oben genannte SQL-Abfrage unter MySQL ausführen, erhalten Sie die folgende Ergebnismenge:
| 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 |
Beachten Sie, dass die Songs dank des RANDvon der ORDER BY-Klausel verwendeten Funktionsaufrufs in zufälliger Reihenfolge aufgelistet werden .