在 PostgreSQL 9.6 我有一个T
这样的表
category | id | data
---------+----+------
A | 1 | foo
A | 2 | bar
A | 3 | baz
B | 4 | eh
B | 5 | whatcomesafterfoobarbaz
Run Code Online (Sandbox Code Playgroud)
有一个视图V
为我提供了数据T
,所以它有列category, id, data
。T
本质上是 的物化视图V
,除了我需要以比“刷新所有内容”更多的粒度来刷新它。
所以我会选择V
例如
SELECT * FROM V WHERE category = 'A';
Run Code Online (Sandbox Code Playgroud)
或者
SELECT * FROM V WHERE category = 'A' AND id = 2;
Run Code Online (Sandbox Code Playgroud)
并T
用任何data
V …
我有这个表结构:
id1 id2
1 2
1 3
1 4
2 1
2 5
Run Code Online (Sandbox Code Playgroud)
我需要构建一个查询来选择id2
where id1
is not in id2
. 例如,如果id1 = 1
只有id2=3
和id2=4
。
我试过这个:
SET @a=1;
SELECT DISTINCT x.id2
FROM tt x, tt y
WHERE x.id1=@a AND x.id1 != y.id2;
Run Code Online (Sandbox Code Playgroud)
但它不起作用。