如何在Postgres中创建一个空的匿名表?

时间:2013-09-18 15:29:16

标签: sql postgresql

在Postgres,如果我想创建一个"匿名表" (即基于不在数据库中的数据的临时查询)我可以使用VALUES,例如:

select * from (values (1, 'Hello world'), (100, 'Another row')) as foo (mycol1, mycol2);

但是如何创建一个没有行的匿名表呢? (这是一个代码生成器,所以问题并不像听起来那么奇怪!)。以下不起作用

select * from (values  ) as foo (mycol1, mycol2);

因为我得到了

ERROR:  syntax error at or near ")"
LINE 1: select * from (values  ) as foo (mycol1, mycol2);
                               ^

我知道一项工作

select * from (values (NULL, NULL)) as foo (mycol1, mycol2) where mycol1 is not NULL;

但是有更好的或更多的官方"方式是什么?

(我也有兴趣知道是否可以创建一个没有列的表!)

2 个答案:

答案 0 :(得分:4)

我认为你可以这样做:

select null::text as a, null::int as b
limit 0

答案 1 :(得分:1)

SELECT  *
FROM    generate_series(0, -1)