Oracle 11g:在select查询中强制执行两列之间的关系

时间:2014-09-29 10:09:28

标签: sql oracle oracle11g

我的数据库中有一个表,它通过id和版本将行存储在两个单独的列中,例如,

ID VERSION DATA

1    1      ...

1    2      ...

2    1      ...

2    2      ...

我想要做的是“select * where id and version in”查询,但我不确定如何保持id和版本链接,例如,如果我的输入是id_verList [(1,1) ,(1,2),(2,1)]。

我希望使用此输入返回结果,示例表将是前3行但

select * from table where id in (1,1,2) and version in (1,2,1)

将返回所有4行,因为两个列表未链接。

有没有办法在不改变表格的情况下强制执行id和版本之间的关系,以获得组合的id_ver列。

谢谢, 詹姆斯

2 个答案:

答案 0 :(得分:4)

尝试此查询:

SELECT *
 FROM table_name
 WHERE (id,version) IN ((1,1), (1,2), (2,1))

更多信息:Expression Lists

答案 1 :(得分:0)

SELECT *
  FROM SOME_TABLE
  WHERE (ID = 1 AND VERSION = 1) OR
        (ID = 1 AND VERSION = 2) OR
        (ID = 2 AND VERSION = 1);

分享并享受。