有一個表像這樣: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