在select中加入两个表

时间:2011-10-08 20:50:04

标签: sql

我有两张桌子:

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了。)

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