MySQL:从值列表中选择

时间:2014-09-23 16:23:03

标签: mysql sql

我想知道我是否可以从列表中选择给定的值并填充行?例如,SELECT 1 as one, 2 as two, 3 as three将填充列:

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

我正在寻找填充行的脚本,例如:

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

谢谢!

2 个答案:

答案 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;

DEMO

答案 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