我有这张桌子(a)



和这张桌子(b)



现在,我必须从A获取所有不在B中出现的记录(a.id不以b.idDomanda出现),并且B.idUser不是1。因此,在这种情况下,它应该仅从a返回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

最佳答案

您想将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
                 );

关于mysql - 获取具有特定用户标识的其他表中不存在的记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27639358/

10-13 00:48