2014-09-23 76 views
10

我想知道如果我可以從列表中選擇給定值並填充行嗎?例如,SELECT 1 as one, 2 as two, 3 as three將填充列:MySQL:從值列表中選擇

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

我在尋找用於填充行的,就像一個劇本:

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

謝謝!你可以聯合各一個,如果你想要像這樣

SELECT 1 AS numbers 
UNION SELECT 2 
UNION SELECT 3 

一個更簡單的方式做這樣的事情將是使具有自動錶遞增ID ...插入的另一列

回答

12

表一個空字符串...那麼只需要選擇自動遞增的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

+0

有沒有類似數組的功能? '選擇列表(1,2,3)AS編號「。 – bodruk 2014-09-23 16:26:59

+1

@drux沒有SQL沒有數組函數..它有表,你基本上可以用作數組。 – 2014-09-23 16:29:06

+0

嘿!謝謝,@John Rudell。 – bodruk 2014-09-23 16:30:14

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