SQL用于选择组中至少有一行的行,在另一个表中具有相应的条目

时间:2012-03-14 05:46:49

标签: sql

我有两张桌子

Table1: FieldA, FieldB
Table2: FieldA

Table1FieldB分组,FieldA是两个表之间的链接。

对于Table1中的每个分组,如果该组中的所有行都没有Table2中的条目,则不返回与该组对应的行。如果组中至少有一行在Table2中有一个条目,则返回该组中的所有行。

这种查询可能吗?

由于

西蒙

3 个答案:

答案 0 :(得分:0)

听起来你需要做一个简单的内连接:

SELECT t1.* FROM Table1 t1 INNER JOIN Table2 t2 ON t1.FieldA=t2.FieldA;

我不清楚你的问题是否表2中的值是唯一的。如果它们不是唯一的,那么这个子查询可能会更好:

SELECT * FROM Table1 WHERE FieldA in (SELECT distinct(FieldA) FROM Table2);

答案 1 :(得分:0)

如果我正确理解您的问题,那么JOIN会这样做;

SELECT DISTINCT t1a.*
FROM Table1 t1a
JOIN Table1 t1b
  ON t1a.FieldB = t1b.FieldB
JOIN Table2 t2
  ON t2.FieldA=t1b.FieldA;

演示here

答案 2 :(得分:0)

SELECT *
FROM Table1
WHERE FieldB IN (
  SELECT t1.FieldB
  FROM Table1 t1
  JOIN Table2 t2
    ON t1.FieldA = t2.FieldA
  GROUP BY t1.FieldB
)