我有一张这样的桌子:
Item
---------
id
parentId
name
inventoryNumber
当且仅当行...时,我才需要更新inventoryNumber
- 父 ID = 12345
- 名称字符串与给定字符串“The quick brown fox”完全匹配
- 该行是唯一与前两个条件匹配的行。
如果我只是在做一个选择,我相信我知道该怎么做......
SELECT * FROM Item WHERE parentId=12345
AND name LIKE 'The quick brown fox' HAVING count(*)=1
但我需要更新行...
UPDATE Item SET inventoryNumber = 456 WHERE
这是 parentId=12345 的唯一行,也是 name='The quick brown fox' 的唯一行
我有大约 5000 行要更新,所以如果我能在单个语句中获得更新的方法,它将大大减少我的工作量。这可以做到吗?
更新:我已经尝试将其放入子查询中,例如:
UPDATE Item SET inventoryNumber = 456 WHERE id IN (
SELECT id
FROM Item
WHERE parentId = 12345 AND name LIKE 'The quick brown fox' HAVING count(*)=1
);
但是当我这样做时,我从 MySql 收到一个错误“您不能在 FROM 子句中指定目标表 'item' 进行更新: