我有3张桌子,一张Users
桌子,一张Preferences
桌子和一张User_Preferences
桌子。他们看起来像这样:
Users
桌子:
Preferences
桌子:
User_Preferences
桌子:
多年以来,已经添加了许多新的首选项,但是现在基础体系结构已经有所变化。以前,如果该User_Preferences
表不包含某个链接Preference
,则无所谓,但是现在,每个表都Preference
需要分配给every User
。
因此,鉴于已填充了这三个表,我可以运行哪些查询以User_Preferences
显示缺失的列表?
例如,如果有2个用户和2个权限,并且第一个用户同时拥有,但第二个用户拥有一个,它将为我提供该用户和该权限的一行
您可以使用cross join
来生成所有组合,然后使用过滤掉存在的组合left join
:
select u.*, p.*
from users u cross join
preferences p left join
user_preferences up
on up.user_id = u.user_id and up.preference_id = p.preference_id
where up.user_id is null;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句