SQLite的:如何在“价值”的子查询名称的列
问题描述:
在postgres的我可以说:SQLite的:如何在“价值”的子查询名称的列
test=# select * from (values(1),(3),(7)) as foo(id);
id
----
1
3
7
(3 rows)
这意味着,这样的子选择可以随后与其它表使用foo.id等接合
SQLite中我可以说:
sqlite> select * from (values(1),(3),(7)) as foo;
----------
1
3
7
,但如果我说FOO(ID),我会得到一个错误:
sqlite> select * from (values(1),(3),(7)) as foo (id);
Error: near "(": syntax error
很明显,通常的子选择(例如, “(选择... as a,... as b from ...)as foo”)你可以简单地命名每个字段。
唯一的简单的解决方法我发现名字列在这种情况下是做一个像工会:
sqlite> select * from (select 1 as id where 1=0 union values(1),(3),(7)) foo;
id
----------
1
3
7
有没有更好的方式SQLite中来命名这种“子查询”栏目?
答
通过值创建的列有,你会不会想用(尽管这是可能的)名称:
sqlite> .mode columns
sqlite> .header on
sqlite> select * from (values(1,2,3));
:1 :2
---------- ---------- ----------
1 2 3
sqlite> select "", ":1", ":2" from (values(1,2,3));
:1 :2
---------- ---------- ----------
1 2 3
这不能改变;没有比用UNION ALL前缀'真实'SELECT更好的方法。
嗯,我明白了,所以我的专栏实际上可以通过“” - 很好。然后重命名的唯一方法可能是再选择一个级别(不是一个巨大的,考虑到你不会使用“值”与一个巨大的列表) sqlite>选择“”作为col1,“:1”作为col2, “(2)”作为col3 from(values(1,2,3)); 或工会。 清除。谢谢。 – 2015-02-09 18:35:54