5

在 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;

但是有更好或“更官方”的方式吗?

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

4

2 回答 2

4

我认为你可以这样做:

select null::text as a, null::int as b
limit 0
于 2013-09-18T16:52:33.630 回答
1
SELECT  *
FROM    generate_series(0, -1)
于 2013-09-18T16:01:00.673 回答