在一个特定的场景中,使用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引用的列是主键(或者至少是唯一的)。

07-24 09:44
查看更多