如何使用SQL查询列作为where子句的参数?

时间:2014-05-12 21:03:00

标签: sql oracle

我有一个查询返回一个包含一些记录的列:

SELECT TAB1.COD FROM TAB1 WHERE COD > 3 AND COD < 7;

上面的查询将返回如下表:

_____
|COD|
|---|
| 3 |
| 5 |
| 6 |
| 7 |
-----

我想在另一个查询的where子句中使用上面列的值,如下所示:

SELECT TAB2.ID, TAB2.FOO, TAB2.TAB1COD 
FROM TAB2 
WHERE TAB1COD = 3 OR TAB1COD = 5 OR TAB1COD = 6 OR TAB1COD = 7;

我对SQL不太熟悉,如果重要的话,我也会使用Oracle DB。

提前致谢。

2 个答案:

答案 0 :(得分:6)

您可以使用IN,试试这个

SELECT TAB2.ID, TAB2.FOO, TAB2.TAB1COD
FROM TAB2 
WHERE TAB1COD IN (SELECT TAB1.COD 
                   FROM TAB1 
                  WHERE COD > 3 AND COD < 7)

编辑:根据@sgeddes的建议,JOIN也适合您。

答案 1 :(得分:4)

一个简单的JOIN可以解决问题:

SELECT t2.id, t2.foo, t2.tab1cod
FROM tab2 t2
    JOIN tab1 t1 on t2.tab1cod = t1.cod
WHERE t1.cod > 3 AND t1.cod < 7