mysql - DELETE 语句中 INNER 和 LEFT join 有什么区别?

标签 mysql sql join foreign-key-relationship sql-delete

执行删除时,我可以通过执行 LEFT JOIN 来切换两个或多个表中的行。

DELETE a, b FROM
table1 a
LEFT JOIN table2 b on (a.id = b.id)
WHERE ...

我还可以进行INNER JOIN

DELETE a, b FROM
table1 a
INNER JOIN table2 b on (a.id = b.id)
WHERE ...

这两者之间到底有什么区别?

其他连接呢
delete 语句中使用其他连接类型是否有意义?它们有何用处?

删除...联接和使用外键之间有什么区别
如果我使用 ON DELETE CASCADE 子句设置外键:

  1. 它是否与 INNER 或“LEFT”连接匹配(或以上都不匹配)?
  2. 这是否比使用联接“更好”(更快/更安全)?

我正在使用 MySQL,但我还想知道还有哪些其他数据库支持它。

最佳答案

不同之处在于内连接不会删除任何未连接的内容。左联接可以删除未联接的内容,具体取决于 WHERE 子句中的内容。

关于mysql - DELETE 语句中 INNER 和 LEFT join 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5773695/

相关文章:

动态页面上的 PHP 分页无法正常工作

mysql - 优化从3个表mysql中选择元素的查询

sql - 用于向现有表添加删除级联的 tsql 脚本

MySQL 查询浏览器替代品

mysql - 用mysql连接5个表

php - 在取消设置 mysql 对象之前释放结果并关闭连接,或者只是取消设置会破坏对象 n 释放资源?

php - 需要 PHP 和 MySQL 保存游戏进度的反馈

mysql - 在Mysql中加入寄存器

mysql - 如何按列显示结果?

c# - NHibernate 左连接与 linq