mysql - 如何找到数据库中相关表之间的孤立条目?

标签 mysql sql database

我有两个 mySQL 表,代表在特定期刊上发表的文档:

Documents: 

ID Title                          Journal
1  Monty: A New Study             6
2  New Discoveries about Python   17
3  An Unpublished Document        NULL 

Journals: 

ID Title 
6  Journal of Foo
10 Orphans Weekly 
17 Journal of Bar
99 Journal of Orphans

这里,文档“Monty: A New Study”发表在 Journal of Foo 上,“New Discoveries about Python”发表在著名期刊 Journal of Bar 上。

问题是,无论出于何种原因,有些期刊标题没有关联文档,即#10 和#99。我想删除所有没有关联文档的期刊条目。我想做一些类似的事情:

delete from Journals where id is not one of (select journal from documents where journal is not null)  

但是我是 mySQL 的新手,并且陷入了困境。

最佳答案

DELETE FROM `Journals` AS j WHERE j.ID NOT EXISTS(SELECT Journal FROM `Documents`);

或者...

DELETE FROM `Journals` AS j WHERE j.ID NOT IN (SELECT Journal FROM `Documents`);

关于mysql - 如何找到数据库中相关表之间的孤立条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16806068/

相关文章:

sql - 使用联合按子类别排序

database - 我如何在 pl/sql 的列中向我的 varray 列表添加一个值?

MySQL SELECT 行作为连续列

mysql - 远程mysql服务器访问

java - 覆盖 jOOQ 对 UpdatableRecords 的异常处理

mysql - 从同一张表上的两个帐户返回 bool 值

php - 如何根据一天(而不是日期)过滤集合?

mysql - 在 mysql 中连接两个表时丢失数据?

javascript - 当前时间到达特定时间时重定向?

sql - 从 column=column 的表名中选择 count(1)