我有三个表:Member、Meeting 和 Member_Meeting。仅凭名称就应该透露出它们所包含的内容。成员(member)适用于注册成员(member), session 适用于过去和将来的 session ,成员(member)_ session 适用于已经或将要参加 session 的成员(member)。我可以使用内部联接来获取两个表中的数据,使用左联接来获取两个表中的数据,也可以使用左侧的数据,使用右联接来获取两个表中的数据,也可以使用右侧的数据,以及使用(完整)外部联接来获取两个表和右侧的数据离开。然而,我需要的是仅存在于 Member 中但不存在于 Member_Meeting 中的数据。换句话说,我需要获取所有存在但从未参加过 session 的成员,因此在 Member_Meeting 中没有记录。我需要的有点像左联接或右联接,但没有表的共同点。
最佳答案
有两种方法可以做到这一点。第一种是使用 NOT IN()
执行子查询:
SELECT * FROM Member WHERE ID NOT IN(SELECT DISTINCT MemebrID FROM Member_Meeting)
另一个选项是执行LEFT JOIN
,然后过滤空值
SELECT Member.* FROM Member
LEFT JOIN Member_Meeting ON Member.ID = Member_Meeting.MemberID
WHERE Member_Meeting.MemberID IS NULL
关于mysql - 获取表中没有的记录(MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23097844/