我有两张桌子
Table1: FieldA, FieldB
Table2: FieldA
Table1
按FieldB
分组,FieldA
是两个表之间的链接。
对于Table1
中的每个分组,如果该组中的所有行都没有Table2
中的条目,则不返回与该组对应的行。如果组中至少有一行在Table2
中有一个条目,则返回该组中的所有行。
这种查询可能吗?
由于
西蒙
答案 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
)