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

时间:2019-07-10 15:27:15

标签: mysql

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

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

以下是查询:

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

表名称=调味料

主键= dressingID

我正在尝试从QR码中获取一个数字并传递至表格中的最新条目,但是由于某种原因它正在更新每一行,我们将不胜感激。干杯!

1 个答案:

答案 0 :(得分:2)

您需要参考表:

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