在一个特定的场景中,使用SQL检索数据时遇到一些问题:
假设我有以下表格:A
(id,属性a,属性b);B
(id,属性,属性);C
(id_a,id_b);
如您所见,tableC
从tableFK
引用id,从tableA
引用id。
我需要检索与每个C
行相关的表A
行。
在现实生活中,假设A
表示用户,B
表示特权,A
是将用户与特权联系起来的多对多实体,那么我只希望获得具有所有特权的用户
最佳答案
select A.*
from A
join C on id_a = id
group by id
having count(id) = (select count(*) from B)
不需要使用子查询,因为
A.id
作为C.id_a
引用的列是主键(或者至少是唯一的)。