我有一个关于在我想要运行查询的数据库上创建表的约束。数据库系统是Postgres
我可以做以下事情:
testdb=# select 'john' as first, 'doe' as last;
first | last
-------+------
john | doe
但我希望能做的是:
first | last
-------+------
john | doe
jane | doe
所以,我可以生成第一行,但不能生成后续行
或者,如果我的数据库会话丢失,有没有办法确保删除临时表?
干杯
亚当
答案 0 :(得分:1)
这就是你要找的东西吗?
WITH testdb(first,last) AS (VALUES ('john','doe'), ('jane', 'doe'))
SELECT * FROM testdb;
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)