--Table_1
col1 col2
............
123 abc
456 def
123 def
select * from Table_1 where col1 in (123,456) and col2 in (abc,def);
我希望输出匹配仅包含来自“ col1”的“ 123”和来自“ col2”的“ abc”的行,而不匹配来自col1的“ 123”和来自“ col2”的“ def”的行。 IN子句中的列表应以线性方式相应地匹配。
select * from Table_1 where col1 in (123,456) and col2 in (abc,def);
O / P
col1 col2
123 abc
456 def
答案 0 :(得分:3)
您可以使用元组来比较多个列的组合。
select *
from Table_1
where (col1,col2) in ( (123,'abc'),(456,'def'), (789,'abc') );
答案 1 :(得分:1)
您可以尝试使用row_number
窗口函数来制作它。
SELECT col1,col2
from (
select col1,col2,row_number() over(partition by col1 order by col2) rn
from Table_1
where col1 in (123,456) and col2 in ('abc','def')
) t1
where rn = 1