mysql - 为什么我的 UPDATE 查询会更新所有行?

标签 mysql

我试图通过添加 WHERE 子句并选择 MAX 'dressingID' (我的主键)来更新最近添加到表中的行。

该函数正在工作,但它返回每一行,而不仅仅是具有最大 ID 的行。

这是查询:

UPDATE Dressing set dressingCode='111' WHERE dressingID=(SELECT MAX(dressingID))

表名=调料

主键=dressingID

我试图从二维码中获取一个数字并传递到表中的最新条目,但是由于某种原因它正在更新每一行,任何帮助将不胜感激。干杯!

最佳答案

您需要引用表格:

UPDATE Dressing set dressingCode='111' 
WHERE dressingID=(SELECT d FROM ((SELECT MAX(dressingID) AS d FROM Dressing)) s);
                  -- forced materialization

db<>fiddle demo

MariaDB 10.3:

UPDATE Dressing set dressingCode='111' 
WHERE dressingID=(SELECT MAX(dressingID) AS d FROM Dressing);

db<>fiddle demo

相关:You can't specify target table for update in FROM clause


原始查询具有单行的 A=MAX(A) 条件:

UPDATE Dressing set dressingCode='111' 
WHERE dressingID=(SELECT MAX(Dressing.dressingID))
<=>
UPDATE Dressing set dressingCode='111' 
WHERE dressingID=Dressing.dressingID
-- always true for non-nullable dressingID

关于mysql - 为什么我的 UPDATE 查询会更新所有行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56974009/

相关文章:

mysql - 升级 MySQL 后查询不工作

mysql - 一个查询表的结果是另一个查询表的名称,并产生多个 csv 输出文件

mysql - 无法加载时区?

php - 如何使我的变量成为两个不同查询的结果?

java - MySQL 连接未关闭

mysql - SQL:创建具有两个索引的表

c# - 使用 DataSource 在 Dropdownlist 中进行数据操作

mysql - 我应该在此查询中使用哪些 mysql 索引?

php - 您如何让客户使用他们的 Google 帐户登录您的网站?

javascript - 如何从 php 变量中获取值到我们的 javascript 文件中?