如何使用SQLite将值列表查询到一列行?

时间:2011-11-05 01:59:02

标签: sql sqlite

我想获取一个名称列表(例如john,mary,paul)并创建一个SQLite“select”查询,该查询将在一列行中返回此列表。根据{{​​3}},陈述如下:

“根据SQL92标准,VALUES表达式应该能够独立存在。例如,以下应该返回一个包含三行的单列表:”

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

理论上,结果集看起来像:

john
mary
paul

但是正如页面似乎表明的那样,这是SQLite中不支持的功能。我可以弄清楚如何做到这一点的唯一方法是联合一系列select语句,如:

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

这是在SQLite中执行此操作的唯一方法还是有更简单的方法?

2 个答案:

答案 0 :(得分:1)

就我所知,你已经拥有的是SQLite提供的最好的compound SELECT statement。一件小事:你只需要一次列别名。

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

答案 1 :(得分:0)

我发现使用更具表现力:

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

您需要指定第一个选择以获得列别名。

这个结构更易于阅读,并且具有较少的限制,如sqlite文档中所述:

  

短语“VALUES(expr-list)”与“SELECT”意思相同   expr-list“。短语”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中的行数   条款没有任意限制。