我想知道我是否可以从列表中选择给定的值并填充行?例如,SELECT 1 as one, 2 as two, 3 as three
将填充列:
one | two | three
------------------------
1 | 2 | 3
我正在寻找填充行的脚本,例如:
values
-------
1
2
3
4
谢谢!
答案 0 :(得分:13)
如果你愿意,你可以将每个人联合起来
SELECT 1 AS numbers
UNION SELECT 2
UNION SELECT 3
一个更简单的方法来做这样的事情就是创建一个具有自动递增id的表...在表中的另一列插入一个空字符串...然后只选择自动递增的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;
答案 1 :(得分:2)
要获得一些数字,John Ruddell的方法可能是最方便的,我可以轻松地在我需要运行的任何查询中加入内联视图。
当我需要很多数字时,例如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