根据每行中的两个比较获取多行

时间:2011-11-21 12:41:15

标签: sql oracle

我有一张表如下

col1 col2        col3
a    01/01/2001   1.1
a    01/02/2001   1.2
a    01/03/2001   1.3
b    02/03/2004   2.1
b    02/04/2004   2.2
b    02/05/2004   2.3

我希望能够根据每行的多次比较来获取行。也就是说,在我拥有(a,01/01/2001)(b,02/05/2004)的位置获取行。看起来像是什么,

Select * from table where col1,col2 in (('a','01/01/2001'),('b','02/05/2004'))

我该怎么做?

2 个答案:

答案 0 :(得分:3)

SELECT * 
FROM table 
WHERE 
     (col1 = 'a' AND col2 = '01/01/2001')
     OR
     (col1 = 'b' AND col2 = '02/05/2004')

答案 1 :(得分:1)

您的原始代码非常接近,但并不完全存在。您只需要将条件左侧的字段放在方括号

Select * from table where (col1,col2) in (('a','01/01/2001'),('b','02/05/2004'))