我有一张最多可容纳 10 名成员的俱乐部表。我如何查询我目前不是会员的俱乐部加入。
每个俱乐部最多可以有 10 行,每行都有不同的会员 ID。
每个俱乐部可以有 10 名成员并不重要。这只是一个“业务”规则或逻辑约束......
假设三个表:
Club: Club_ID, Club_Name
Member: Member_ID, Member_Name
Club_Member: Club_Member_ID, Club_ID, Member_ID
如果您的 Member_ID 是 123,这将显示您所属的所有俱乐部:
select member.member_id, member.member_name,
club.club_id, club.club_name
from member
join club_member on member.member_id = club_member.club_id
join club on club_member.club_id = club.club_id
where member_id = 123;
去看看那些你不在的......
Select club.club_id, club.club_name
from club
where club.club_id not in (
select club.club_id
from member
join club_member on member.member_id = club_member.club_id
join club on club_member.club_id = club.club_id
where member_id = 123)
如果你真的只有一张这样的桌子:
Club_Members: Club_ID, Club_Name, Member_ID, Member_Name
您所属的所有俱乐部的列表:
select club_id
from club_members
where member_id=123
您不属于的所有俱乐部的列表:
select distinct club_id, club_name
from club_members
where club_id not in (
select club_id
from club_members
where member_id=123 );