因此,我有两个表,一个表名为cmdr_group,一个表名为groupUser。我试图获取该用户不在的所有组的列表,事实证明这相当困难。 GroupUser每个组都有多个用户,每个用户都有自己的ID。

现在,我了解了为什么该查询无法正常工作,但我将其放在此处以说明我的思考过程。

SELECT t1.*, t2.userID
FROM cmdr_group t1
LEFT JOIN groupUser t2 ON t2.groupID = t1.ID
WHERE t1.ID != (SELECT groupID FROM groupUser WHERE userID=90792652);


如果您需要有关表中内容的任何信息,请告诉我。

最佳答案

现在我想我明白了。我会使用not existsnot in来解决这个问题:

select g.*
from cmdr_group g
where not exists (select 1
                  from groupuser gu
                  where gu.userID = 90792652 and
                        gu.groupId = g.Id
                 );


该查询基本上遵循您的问题。整体查询正在获取所有组。 not exists只是检查用户不在组中。

07-25 21:29