首页 >数据库 >mysql教程 >## 为什么 MySQL 多表 UPDATE 查询中不允许使用 LIMIT 子句?

## 为什么 MySQL 多表 UPDATE 查询中不允许使用 LIMIT 子句?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-25 10:20:02758浏览

##  Why is LIMIT Clause Not Allowed in Multi-Table UPDATE Queries in MySQL?

MySQL 错误:UPDATE 和 LIMIT 的使用不正确

在 MySQL 中对多个表执行 UPDATE 查询时,可能会出现错误,原因是UPDATE 和 LIMIT 的错误使用。当尝试更新多个表中的记录时会出现此问题,其中 ON 条件连接表并使用 LIMIT 子句。

根据 MySQL 的 UPDATE 文档,“对于多表语法,UPDATE 更新行在 table_references 中指定的满足条件的每个表中,不能使用 ORDER BY 和 LIMIT。"

在提供的 MySQL 代码中,查询尝试更新“users”和“contact_info”中的行。 " 基于连接条件的表。但是,LIMIT 子句用于将更新的行数限制为 1。这在多表 UPDATE 查询中是不允许的。

要解决此问题,请从查询中删除 LIMIT 子句。这将允许 UPDATE 语句影响连接表中满足指定条件的所有行。修改后的代码如下所示:

$q = "UPDATE users INNER JOIN contact_info ON contact_info.user_id = users.user_id SET active.users = NULL WHERE (email.contact_info = '" . mysqli_real_escape_string($mysqli, $x) . "' AND active.users = '" . mysqli_real_escape_string($mysqli, $y) . "')";
$r = mysqli_query ($mysqli, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($mysqli));

通过删除 LIMIT 子句,查询将更新“users”和“contact_info”表中电子邮件地址和活动状态与指定匹配的所有行价值观。

以上是## 为什么 MySQL 多表 UPDATE 查询中不允许使用 LIMIT 子句?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn