Mysql 如何选择透视表中没有与X id相关的条目的位置
在我的数据库中,我有一个通知类型表,看起来像:Mysql 如何选择透视表中没有与X id相关的条目的位置,mysql,sql,Mysql,Sql,在我的数据库中,我有一个通知类型表,看起来像: +----+---------+ | id | type | +----+---------+ | 1 | live | | 2 | warning | +----+---------+ 事件表: +----+---------------+--------------------+ | id | name | description | +----+---------------+--------
+----+---------+
| id | type |
+----+---------+
| 1 | live |
| 2 | warning |
+----+---------+
事件表:
+----+---------------+--------------------+
| id | name | description |
+----+---------------+--------------------+
| 1 | My event | Hello |
| 2 | Other Event | I'm an event! |
+----+---------------+--------------------+
以及一个称为通知的透视表事件,用于跟踪已为每个事件调用的通知类型:
+----+----------+----------------------+
| id | event_id | notification_type_id |
+----+----------+----------------------+
| 22 | 1 | 1 |
| 23 | 2 | 1 |
+----+----------+----------------------+
我想选择所有没有调用特定类型通知的事件,即没有与X相关的轴的条目。一个选项是使用NOT EXISTS和相关子查询,该子查询检查事件和通知的链接表中的行
SELECT *
FROM events e
WHERE NOT EXISTS (SELECT *
FROM event_called_notifications ecn
WHERE ecn.event_id = e.id
AND ecn.notification_type_id = <your X goes here>);
谢谢,我刚刚找到了不存在的文档。我看到你在为事件和轴心命名,这是否比只说:“从不存在的事件中选择*从称为通知的事件中选择*从称为通知的事件中选择*从称为通知的事件中选择*通知的类型为通知id=1,而称为通知的事件id=events.id```@Pinkflufyllama:这对编写查询的人来说更有效;但是对于DBMS来说没有区别,两个查询都会产生相同的计划。