如何选择某个用户不加入Mysql的组?

如何选择某个用户不加入Mysql的组?,mysql,Mysql,给定三个数据表,用户、组、成员: 例如,组2有用户007和008,成员资格应如下所示: group_id user_id 2 007 2 008 现在,我希望选择用户008尚未加入的组。你能告诉我怎么做吗?提前谢谢 有几种不同的方法可以做到这一点。下面是一个带有外部联接/空检查的: 有几种不同的方法可以做到这一点。下面是一个带有外部联接/空检查的: 试试这个: select distinct group_id from theGr

给定三个数据表,用户、组、成员:

例如,组2有用户007和008,成员资格应如下所示:

group_id      user_id
2             007
2             008

现在,我希望选择用户008尚未加入的组。你能告诉我怎么做吗?提前谢谢

有几种不同的方法可以做到这一点。下面是一个带有外部联接/空检查的:


有几种不同的方法可以做到这一点。下面是一个带有外部联接/空检查的:

试试这个:

 select distinct group_id 
 from theGroup 
 where group_id not in 
(select group_id from membership where user_id='008');
试试这个:

 select distinct group_id 
 from theGroup 
 where group_id not in 
(select group_id from membership where user_id='008');

从组id未插入的组中选择*从用户id类似“008”的成员身份中选择组id

从组id未插入的组中选择*从用户id类似“008”的成员身份中选择组id

为什么会被否决?我想它会起作用的。不是吗?是的,即使使用“不存在”也会起作用。既然查询保持不变,我们只需要将not IN替换为not exist为什么会被否决?我想它会起作用的。不是吗?是的,即使使用“不存在”也会起作用。由于查询保持不变,我们只需要将not IN替换为not EXISTSHMM,不知道为什么会被否决。。。我选择了整个数据,而不仅仅是组id,并假设组id在表theGroup中是唯一的,因为它应该是唯一的。所以我不知道为什么这是错误的。我没有投票否决你的答案。但是为什么它的用户id像“008”?也许你应该调整一下格式。无论如何,谢谢你的回答!LIKE几乎是LIKE=如果不使用通配符%,性能影响可以忽略,因为SQL引擎将其转换为=。我同意=更适合这里,而如果以后您想基于更复杂的用户id模式进行过滤,则LIKE会增加更多的灵活性。鉴于你的用户id不是一个INT而是一个字符串,我可能错误地认为你有额外的数据内置在复杂的id中:XY,其中X表示某种不同的组,Y是数字id。否则,将用户id作为字符串而不是INT是没有意义的。这就是为什么我使用like.Hmmm,不知道为什么这被否决了。。。我选择了整个数据,而不仅仅是组id,并假设组id在表theGroup中是唯一的,因为它应该是唯一的。所以我不知道为什么这是错误的。我没有投票否决你的答案。但是为什么它的用户id像“008”?也许你应该调整一下格式。无论如何,谢谢你的回答!LIKE几乎是LIKE=如果不使用通配符%,性能影响可以忽略,因为SQL引擎将其转换为=。我同意=更适合这里,而如果以后您想基于更复杂的用户id模式进行过滤,则LIKE会增加更多的灵活性。鉴于你的用户id不是一个INT而是一个字符串,我可能错误地认为你有额外的数据内置在复杂的id中:XY,其中X表示某种不同的组,Y是数字id。否则,将用户id作为字符串而不是INT是没有意义的。这就是为什么我使用like。
 select distinct group_id 
 from theGroup 
 where group_id not in 
(select group_id from membership where user_id='008');