2017-05-15 67 views
0

我想在sql表中進行搜索,並得到結果爲 的行在兩個不同列中具有特定的一對值。從同一個SQL表中選擇具有特定值組合的大列表

在表像

A | B 
----+---- 
a1 | b1 
a2 | b5 
a3 | b2 
a4 | b3 
a5 | b5 

我要找對(A1,B1),(A2,B5)和(A3,B2)。

我當時就想,做這樣的事情

SELECT ... 
FROM ... 
WHERE t.a in (a1 , a2 , a3) 
    AND t.b in (b1,b5,b2) 

但這返回給定爲輸入2列出了所有可能的組合。

然後我看到了這方面的工作

SELECT ... 
FROM ... 
WHERE (t.a = a1 AND tb = b1 ) 
    OR (t.a = a2 AND tb = b5 ) 
    OR (t.a = a3 AND tb = b2 ) 

但是這個SQL命令可以成爲作爲搜索對象的數量增加非常大的(在我來說,我有一個大的號碼搜索對)

所以我想知道你是否有更好的SQL查詢建議?

+0

? Postgres的?甲骨文? –

+1

將您的搜索對加載到臨時表中,然後將您的表加入您的查詢 – Stephen

回答

1

您可以比較的元組:

select ... 
from ... 
where (a,b) in (('a1','b1'), ('a2','b5'), ('a3','b2')); 

你不說出你的DBMS,但是上面的是你使用的是哪個DBMS ANSI標準SQL

+0

謝謝!它看起來好多了。 – Harry

相關問題