2011-11-05 100 views
2

我想獲取一個名稱列表(例如john,mary,paul)並創建一個SQLite「select」查詢,該查詢將在一列行中返回此列表。基於this,下面有人說:如何使用SQLite將值列表查詢到一列行中?

「按照SQL92標準,一個VALUES表達式應該能夠站在自身例如,以下應返回一列的表有三排:」

VALUES 'john', 'mary', 'paul'; 

從理論上講,結果集看起來像:

john 
mary 
paul 

但隨着網頁似乎表明,這是SQLite的不支持的功能。我可以找出如何做到這一點的唯一方法是通過unioning像這樣一系列的select語句:

SELECT 'john' AS name 
UNION ALL SELECT 'mary' AS name 
UNION ALL SELECT 'paul' AS name; 

這是做到這一點的唯一方法在SQLite的或有更簡單的方法嗎?

回答

1

據我所知,你已經有了最好的compound SELECT statement SQLite必須提供。一件小事:你只需要一次列別名。

SELECT 'john' AS name 
UNION ALL SELECT 'mary' 
UNION ALL SELECT 'paul'; 
0

我發現了更多的表現爲使用:

SELECT 'john' AS name UNION ALL VALUES ('mary'), ('paul') 

你需要指定的第一選擇,以獲得列別名。

此結構是更容易閱讀和有作爲的SQLite文檔中所述的限制較少:

短語「VALUES(表達式列表)」指的是同樣的事情,「SELECT EXPR列表」。短語「VALUES(expr-list-1),...,(expr-list-N)」意思是 與「SELECT expr-list-1 UNION ALL ... UNION ALL SELECT expr-list- N」。兩種形式都是相同的,但 複合中的SELECT語句的數量受限於 SQLITE_LIMIT_COMPOUND_SELECT,而VALUES 子句中的行數沒有任何限制。

相關問題