2011-11-05 98 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 子句中的行数没有任何限制。

相关问题