获取具有特定用户ID的另一个表中不存在的记录

时间:2014-12-24 15:53:55

标签: mysql sql

我有这张桌子( a

此表( b

现在我必须从 A 中获取所有记录 B a.id 不存在 b .idDomanda )以及 B.idUser 不是 1 的地方。所以在这种情况下,它应该从a返回 only id 2 ,但它返回1和2.

这是我的查询

SELECT a.* FROM a LEFT JOIN b ON a.id=b.idDomanda WHERE ( b.idUser <> 1 OR b.idUser IS NULL ) GROUP BY a.id

2 个答案:

答案 0 :(得分:1)

您希望将b上的条件移至on子句:

SELECT a.*
FROM a LEFT JOIN
     b
     ON a.id = b.idDomanda and b.idUser <> 1
WHERE b.idUser IS NULL
GROUP BY a.id;

group by表示您可能希望改为使用not exists

select a.*
from a
where not exists (select 1
                  from b
                  where a.id = b.idDomanda and b.idUser <> 1
                 );

答案 1 :(得分:0)

根据您的数据集,应该没有结果。

A中所有不存在于B中的记录(a.id不作为b.idDomanda出现) 鉴于测试数据集,所有A实际上都是IN b.idDomanda ...即使过滤掉userId = 1。

但正如之前的人指出的那样是要检查的查询。