Сортировка SQL запроса в RAND с исключениями - PullRequest
0 голосов
/ 20 июня 2020

У меня есть таблица с 21 строкой. Я хочу, чтобы строки 10, 20 и 21 были строками 10, 20 и 21 в таблице html с использованием запроса, хотя я бы хотел, чтобы 1-9 и 11-19 были случайными по отношению к другим ряды. Я не могу найти ничего о том, как добавить исключения для случайной сортировки. Кто-нибудь может помочь с этим?

1 Ответ

0 голосов
/ 20 июня 2020

В стандартном SQL вы можете использовать ROW_NUMBER для нумерации строк в нужном вам порядке, например, по идентификатору. Затем в вашем предложении ORDER BY сначала упорядочите блоки (строки 1-9, 10, 11-19, 20, 21), а затем перемешайте блоки внутри блоков, используя случайную функцию.

Следующее MySQL . Начиная с версии 8, он поддерживает ROW_NUMBER(). Его случайная функция называется RAND(). В других СУБД может быть другая функция для получения случайного числа.

select t.*, 
from mytable
order by 
  case
    when row_number() over (order by id) <= 9 then 1
    when row_number() over (order by id) = 10 then 2
    when row_number() over (order by id) < 20 then 3
    when row_number() over (order by id) = 20 then 4
    when row_number() over (order by id) = 21 then 5
    else 6
  end,
  rand();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...