MySQL: выберите из списка значений

Мне было интересно, могу ли я выбрать заданные значения из списка и заполнить строки? Например, SELECT 1 as one, 2 as two, 3 as three будет заполнять столбцы:

one    | two    | three
------------------------
1      | 2      | 3

Я ищу script, который заполняет строки, например:

values
-------
1
2
3
4

Спасибо!

Ответ 1

вы можете объединить каждый, если хотите так

SELECT 1 AS numbers
UNION SELECT 2
UNION SELECT 3

гораздо более простой способ сделать что-то подобное: создать таблицу с автоматически увеличивающимся идентификатором... вставить в другой столбец в таблице пустую строку... затем просто выбрать автоматически увеличивающийся id

CREATE TEMPORARY TABLE tmp (
    id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
    val  varchar(1) 
);
INSERT INTO tmp (val)
values
(""),
(""),
(""),
(""),
(""),
(""),
(""),
(""),
(""),
("");
select id from tmp;

DEMO

Ответ 2

Чтобы получить несколько чисел, подход Джона Рудделла, вероятно, самый удобный, я могу легко включить встроенный просмотр в любой запрос, который мне нужно запустить.

Когда мне нужно много чисел, например, от 1 до 4000, я могу сделать что-то вроде этого:

CREATE TABLE digit (d INT(11) NOT NULL PRIMARY KEY);
INSERT INTO digit (d) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);

SELECT thousands.d*1000+hundreds.d*100+tens.d*10+ones.d+1 AS n
  FROM digit ones
 CROSS
  JOIN digit tens
 CROSS
  JOIN digit hundreds
 CROSS
  JOIN digit thousands
 WHERE thousands.d < 4

Я также могу добавить предложение HAVING, если границы чисел, которые мне нужны, не совсем такие аккуратные, например

HAVING n >= 121
   AND n <= 2499

Если я хочу, чтобы "числа" были возвращены в порядке, я добавлю предложение ORDER BY:

ORDER BY n