有一个表像这样:Mysql的更新行,如果我的唯一的匹配结果
Item
---------
id
parentId
name
inventoryNumber
我需要更新inventoryNumber当且仅当该行...
- 的parentId = 12345
- 名字符串完全匹配给定的字符串“的 敏捷的棕色狐狸”
- 行是匹配前两个 标准才行。
我相信我知道如何做到这一点,如果我只是做一个选择......
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 ='快速棕色狐狸'
我有大约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子句:
我试过了,我得到一个错误...你不能指定目标表“项目”的更新FROM子句 – kasdega
再次看看kasdega。我希望它能解决你的问题。干杯。 – medina
我的表格非常庞大,所以我限定了INSERT INTO语句,并且必须更新update/select语句才能找到索引,但除此解决方案之外。谢谢! – kasdega