在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;
但是有更好的或更多的官方"方式是什么?
(我也有兴趣知道是否可以创建一个没有列的表!)
答案 0 :(得分:4)
我认为你可以这样做:
select null::text as a, null::int as b
limit 0
答案 1 :(得分:1)
SELECT *
FROM generate_series(0, -1)