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 (子查询)多对多中通过中间表查对方列表的主要内容,如果未能解决你的问题,请参考以下文章
MySQL 基础 -- 多表关系(一对一1对多(多对一)多对多)多表查询(内连接外连接自连接子查询(嵌套查询)联合查询 union)笛卡儿积