SQL 根据另一个表删除行

标签 sql mysql

这可能很容易,但现在是星期一早上。我有两张 table :

表1:

Field        | Type             | Null | Key | Default | Extra
id           | int(32) unsigned | NO   | PRI | NULL    | auto_increment
group        | int(32)          | NO   |     | 0       |                

表2:

Field     | Type             | Null | Key | Default | Extra
group     | int(32)          | NO   |     | 0       | 

忽略其他字段...我想要一个 SQL DELETE 语句,该语句将删除 Table1 中存在等于 Table1.group 的 Table2.group 的所有行。因此,如果 Table1 中的一行 group=69,当且仅当 Table2 中存在 group=69 的行时,才应该删除该行。

感谢您的帮助。

最佳答案

我想这就是你想要的:

DELETE FROM `table1`
WHERE `group` in (SELECT DISTINCT `group` FROM `table2`)

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

相关文章:

java - JPA 为每个项目选择最新实例

php - SQL查询获取不同表中的相关数据

mysql - Json 模式字段顺序

mysql - 在日期更改时重新启动的每个表行的计数器 Mysql

sql - 查询不使用索引 --

java - 是否可以使用客户生成器在 JOOQ 中将两个数据库字段合并为一个?

SQL Server操作系统错误5 : "5(Access is denied.)"

mysql - 为规范化 3NF 分解表格

sql - 从文本文件数据创建数据库表

mysql - 将数组与(mysql)表进行比较的最快方法