通常在多個值是使用一個值:IN
SELECT * FROM data WHERE f1 IN (<subquery>)
它可以具有多個值使用它:
SELECT * FROM data WHERE f1 IN (<subquery>) OR f2 IN (<subquery>);
但我可以刪除重複,是這樣的:
SELECT * FROM data WHERE ANY(f1, f1) IN (<subquery>)
我試過使用CTE,但它也需要子查詢。
通常在多個值是使用一個值:IN
SELECT * FROM data WHERE f1 IN (<subquery>)
它可以具有多個值使用它:
SELECT * FROM data WHERE f1 IN (<subquery>) OR f2 IN (<subquery>);
但我可以刪除重複,是這樣的:
SELECT * FROM data WHERE ANY(f1, f1) IN (<subquery>)
我試過使用CTE,但它也需要子查詢。
,我發現,最快的(可惜不是最短)的方法是使用CTE:
WITH x AS (<subquery>)
SELECT * FROM data WHERE f1 IN (SELECT * FROM x) OR f2 (SELECT * FROM x)
假設你有col2
列col1
,以及col3
和你正在尋找你的子查詢col1
和col2
(爲了說明的緣故),你可以這樣做:
select col1,col2,col3
from table
where (col1,col2) in (<subquery>)
group by 1,2,3;
只要因爲<subquery>
屬於(粗略)形式select col1,col2 from <blah>
,那麼您將以不同的(col1,col2,col3)
三元組結尾,其中(col1,col2)
對出現在<subquery>
中。
我可能會在一組運營商而言這樣寫:雖然這兩種解決方案工程
SELECT *
FROM data
WHERE EXISTS (
VALUES(f1, f2)
INTERSECT
SELECT(<subquery>)
)