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