在不创建表的情况下创建表

时间:2015-08-04 21:28:31

标签: sql postgresql

我有一个关于在我想要运行查询的数据库上创建表的约束。数据库系统是Postgres

我可以做以下事情:

testdb=# select 'john' as first, 'doe' as last;                                          
 first | last 
-------+------
 john  | doe

但我希望能做的是:

 first | last 
-------+------
 john  | doe
 jane  | doe

所以,我可以生成第一行,但不能生成后续行

或者,如果我的数据库会话丢失,有没有办法确保删除临时表?

干杯

亚当

2 个答案:

答案 0 :(得分:1)

这就是你要找的东西吗?

WITH testdb(first,last) AS (VALUES ('john','doe'), ('jane', 'doe')) 
SELECT * FROM testdb;

SQL Fiddle Demo

  

WITH提供了一种编写辅助语句以便在更大的范围内使用的方法   查询。这些语句通常称为公用表   表达式或CTE可以被认为是定义临时表   仅存在于一个查询中。 WITH中的每个辅助语句   子句可以是SELECT,INSERT,UPDATE或DELETE;和WITH子句   本身附加到一个主语句,也可以是SELECT,   INSERT,UPDATE或DELETE。

答案 1 :(得分:1)

最短(最紧凑)的形式是行构造函数:

select * 
from ( 
   values 
      ('John', 'Doe'), 
      ('Jane', 'Doe'), 
      ('Arthur', 'Dent')
) as t (first, last)