我有两个简单的表,它们分别是:t和p。这里是用于创建和插入其值的代码,以便您可以重构它们。t:
CREATE TABLE t ( x int NOT NULL, y int NOT NULL ); INSERT INTO t VALUES (2,1),(5,3),(6,4),(7,6),(9,9);
p:
CREATE TABLE p ( val int NOT NULL ); INSERT INTO p VALUES (4),(5),(7),(8),(9);
原始查询是:
SELECT t.x AS x FROM t AS t WHERE t.x IN (SELECT p.val FROM p WHERE p.val > t.y);
输出:
x -- 5 7
现在,我尝试将该查询的子查询重写为WITH子查询。
我尝试过:
WITH pvals AS (SELECT p.val FROM p,t WHERE p.val > t.y), xs as (select t.x from t,p where p.val>t.y) --sth wrong SELECT t.x AS x FROM t WHERE t.x in(select * from pvals);
但是这给出了输出
x -- 5 7 9
你能提供一个线索吗?
我有两个简单的表,分别为:t和p。这里是用于创建和插入其值的代码,以便您可以重构它们。 t:创建表t(x int NOT NULL,y int NOT NULL);插入到...
根据我对问题的理解,您有两个条件可以加入/联系表t
和p
,即