where EXISTS (子查询)多对多中通过中间表查对方列表

Posted 戈博小刀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了where EXISTS (子查询)多对多中通过中间表查对方列表相关的知识,希望对你有一定的参考价值。

用户表A,小组表B,小组和用户是多对多关系,中间有个中间表M

已知 小组 id 即teamId ,想知道这个小组中的用户列表信息,可以如下写sql:

 

select * from A a where EXISTS (select m.id from M m where a.id = m.aid and m.bid = (参数teamId));

where 后面 跟 exists (子查询)的意思是,括号里面子查询至少有一条记录时,前面的大的select查询语句才返回结果

 

此查询语句中涉及了三张表:表A ,表B, AB多对多关系表M

【记忆方法:因为要查用户列表,所以外层的大select 查询的from是用户表,然后后面子查询中才是A和B与中间表中的关系条件】

 

以上是关于where EXISTS (子查询)多对多中通过中间表查对方列表的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis注解开发之多对多查询

MySQL 基础 -- 多表关系(一对一1对多(多对一)多对多)多表查询(内连接外连接自连接子查询(嵌套查询)联合查询 union)笛卡儿积

LINQ to Entities 查询多对多表

在 laravel 中搜索查询并计算结果的多对多关系

改进多对多关系的 LINQ 查询

SQL WHERE EXISTS 掩盖了子查询中的错误