mysql - 根据另一个表中的信息删除一个表中的行

标签 mysql sql

我想从 Table2 中删除我的行,其中 ID 存在于 Table1 中,并且在 Table1 中存在确定是否应该发生删除的值。

例子:

表1

+--------+--------+
|   ID   | Author |
+--------+--------+
|  121   |  John  |
+--------+--------+
|  150   |  Ann   |
+--------+--------+

表2

+--------+---------+-----------+
|   ID   | MetaKey | MetaValue |
+--------+---------+-----------+
|  121   |  Color  |    red    |
+--------+---------+-----------+
|  150   |  Color  |    grey   |
+--------+---------+-----------+
|  121   |  Weight |    10     |
+--------+---------+-----------+
|  150   |  Weight |    30     |
+--------+---------+-----------+

然后从 Table2 中删除行,作者是 'John'(来自 Table1)

最佳答案

您可以使用 exists 子句和相关子查询来做到这一点:

delete from t2
where exists (select 1 from t1 where t2.id = t1.id and t1.Author = 'John')

关于mysql - 根据另一个表中的信息删除一个表中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18512114/

相关文章:

mysql - 数据库模式,默认值为 NOW()

sql - 设计题: Filterable attributes, SQL

mysql - 如何从 WordPress 中的所有帖子中删除带有拉丁文本的 anchor 标记?

php - 查询按外来id输出一组值

mysql - 引用多个表的 SQL 查询的正确结构是什么?

mysql - 如何优化缓慢的 MySQL 查询

mysql忽略检查约束

mysql - 仅检索具有连接记录的记录

mysql - 重命名sql中的选择列

java - 如何在服务器上运行java程序?