Вы можете использовать row_number()
, если вы используете MySQL 8.0:
(select name, 1 src, row_number() over(order by registration_date) rn from users)
union all
(select name, 2, row_number() over(order by popularity) from food)
order by rn, src
В каждом union
ed подзапросе мы используем row_number()
для ранжирования записей и добавления еще одного столбца, вызывается src
, чтобы определить, из какой таблицы поступает запись.
Затем остается только order by
назначенный row_number()
, используя дополнительный столбец для чередования записей.
Обратите внимание, что я изменил ваш запрос, чтобы перечислить столбцы select
ed в подзапросах; select *
обычно не является хорошей практикой, особенно с union all
, который требует, чтобы оба набора данных имели одинаковое количество столбцов (с эквивалентными типами данных).