mysql - 获取表中没有的记录(MySQL)

标签 mysql join

我有三个表: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/

相关文章:

Mysql 5.5 查询优化

php - Yii2 MongoDB 查询不工作

mysql - 带条件计数并连接

MySql 连接查询两张表

c# - 使用 LINQ 和 Lambda 加入/在何处

mysql - 我有两个名为 created_at 和 updated_at(timestamps) 的字段,我想在我的 where 子句中的这些日期之间进行搜索

php - 我在 mysql 中有一个问题,我有一个自动递增的字段 id 和一些其他字段

php - bool 字段与单独表

sql-server - 如何使用左连接代替内连接

sql - 获取两个品牌之间共同的用户数量