我有一个查询返回一个包含一些记录的列:
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。
提前致谢。
答案 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