因此,我有两个表,一个表名为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 exists
或not 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
只是检查用户不在组中。