Задча написать SQL запрос, который бы возвращал точно такой вывод:
id|
---
1 |
2 |
3 |
5 |Представьте, что в БД нет ни одной таблицы, и создавать их нельзя.
mysql> SELECT 1 id UNION SELECT 2 id UNION SELECT 3 id UNION SELECT 5 id;
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 5 |
+----+
4 rows in set (0,00 sec)
Существует ли более элегантное решение?
В MySQL единственный вариант (Алиас нужен только у первого числа):
select 1 ID union select 2 union select 3 union select 5Самый красивый (для малого количества чисел) вариант можно написать в MS-SQL и Postrgess:
select * from (values (1),(2),(3),(5)) as t(id)Oracle (С использованием системного типа в качестве коллекции):
select column_value ID from table(sys.odcinumberlist(1,2,3,5))Если чисел значительно больше и они идут просто подряд, то почти универсальный (Из широко распространенных СУБД НЕ работает только в MySQL):
with Q as (
select 1 ID
union all
select ID+1 from Q where ID<5
) select * from Q
Самый лаконичный (IMHO) вариант для большого количества чисел подряд в Oracle:
select rownum id from DUAL connect by rownum<6
ЕщёВ Oracle можно воспользоваться XQuery последовательностью:
select to_number(column_value) id from xmlTable ('1 to 3, 5')
/
ID
----------
1
2
3
5👉 Пишите свое решение в комментариях👇
@sqlhub