2017-08-23 93 views
1

我有兩個變量值列表,但長度相等。sql - 動態選擇使用where子句的兩個列表

Example: 
vals1: a, b, c 
vals2: 1, 2, 3 

什麼是做一些等同於最好的辦法:

select * from table where (col1=vals1[0] and col2=vals2[0]) or (col1=vals1[1] and col2=vals2[1]) or (col1=vals1[2] and col2=vals2[2]) 

牢記列表的長度可以爲1以上,總是相同的長度。如果存在另一個選項(最好以SQL查詢的形式),我很樂意不循環和構建字符串。任何幫助將不勝感激,謝謝。

+0

使用的數組中的字符串分路器功能無論數據庫使用的是寫的。谷歌知道他們很多。 –

+2

這是什麼數據庫? SQL方言不同。 – mustaccio

+1

你正在使用哪些DBMS? –

回答

1

unnest並行

select * 
from t 
where (col1, col2) in (
    select (a,b) 
    from (
     select unnest(array['a','b','c']), unnest(array[1,2,3]) 
    ) s (a,b) 
)