Как выбрать несколько статических строк с одним запросом SQL в MySQL - PullRequest
0 голосов
/ 16 сентября 2018

Мы все знаем, что:

select 1,2,3

даст нам:

|1|2|3|

Однако я хочу получить:

|1|
|2|
|3|

Я знаю, что это может быть достигнуто "союзом", как:

select 1 union select 2 union select 3

И БЕЗ временной таблицы или предопределенной таблицы.

Есть ли лучшее решение? Спасибо.

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

Ваша UNION версия в порядке.В качестве альтернативы MariaDB вы можете использовать VALUES:

VALUES(1),(2),(3);

db <> fiddle

0 голосов
/ 16 сентября 2018

Ваше решение в основном нормально, но вы должны использовать union all:

select 1 union all select 2 union all select 3

union накладные расходы на удаление дубликатов, и вы не хотите этого делать.

Альтернативным решением будет использование таблицы numbers, если у вас есть одна удобная.

Другим решением было бы взять любой достаточно большой стол и использовать:

select (@rn := @rn + 1) as n
from t cross join
     (select @rn := 0) params
limit 3;

Это удобно, если вы хотите расширить до больших чисел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...