我有两张桌子:
TABLE 1
ID VALUE
1 ABC
2 DEF
3 GHI
4 JKL
5 XYZ
TABLE 2
ID T1_ID VALUE
1 1 A
2 1 B
3 2 A
4 3 A
5 3 B
6 4 B
我想从表1中选择所有行,其中包含值为A AND B的TABLE 2行。 这将是第1行和第3行(不是2,因为它只有A,而不是4,因为它只有B)。 我可以在没有子查询的情况下这样做吗?
(注意:我还需要查询表1中的值,这样我就不能只查询表2了。)
答案 0 :(得分:3)
Tadaaah!没有子查询。
select distinct
t1.*
from
Table1 t1
inner join Table2 t2a on t2a.t1_ID = t1.ID and t2a.VALUE = 'A'
inner join Table2 t2b on t2b.t1_ID = t1.ID and t2b.VALUE = 'B'
答案 1 :(得分:2)
SELECT t1.ID,
t1.VALUE
FROM Table1 t1
JOIN Table2 t2
ON t1.ID = t2.T1_ID
WHERE t2.VALUE IN ( 'A', 'B' )
GROUP BY t1.ID,
t1.VALUE
HAVING COUNT(DISTINCT t2.VALUE) = 2