Як я пояснював у цій статті , для переміщення набору результатів 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
Для 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 Server
На 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.