我想获取一个名称列表(例如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中执行此操作的唯一方法还是有更简单的方法?
答案 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中的行数 条款没有任意限制。