为什么没有列的SELECT有效

时间:2015-08-26 03:42:48

标签: postgresql

我意外地写了一个像select from my_table;这样的查询,令人惊讶的是它是有效的陈述。对我来说更有趣的是,即使SELECT;是PostgreSQL中的有效查询。您可以尝试用以下方法编写很多有趣的查询:

select union all select;
with t as (select) select;
select from (select) a, (select) b;
select where exists (select);
create table a (b int); with t as (select) insert into a (select from t);

这是某些定义SQL标准的结果,还是有一些用例,或者只是有趣的行为,没有人关心以编程方式限制?

1 个答案:

答案 0 :(得分:5)

Right from the manual:

  

SELECT之后的输出表达式列表可以为空,从而生成零列结果表。根据SQL标准,这不是有效的语法。 PostgreSQL允许它与允许零列表一致。但是,使用DISTINCT时,不允许使用空列表。

如果我没有弄错的话,“零列”表的可能性是表继承的副作用。关于Postgres邮件列表的讨论(但我现在找不到)