我有一个像这样的简化表:
id | title | note
----------------------------------
1 | Lorum Ipsum | some note
2 | Lorum Not Ipsum | some note
3 | Lorum Ipsum | another note
4 | Lorum Ipsum | some note
我使用以下声明:
UPDATE table
SET title = 'newTitle'
WHERE title = (SELECT title FROM table WHERE id = 1)
AND note = (SELECT note FROM table WHERE id = 1)
但我收到了“ER_UPDATE_TABLE_USED”。
如果我提供id = 1,它应该更新id = 1和id = 4的行的标题
如何通过仅提供ID来更新同一个表中具有相同值的列?
答案 0 :(得分:4)
MySQL不允许您在update
或delete
的子查询中使用正在更新的表。
您可以改用join
。
UPDATE Table1 T
JOIN ( select title,note from Table1 where id =1) NewT
on T.title = NewT.title
and T.note = NewT.note
SET T.title = 'newTitle'
答案 1 :(得分:0)
INSERT INTO Table
SET id=1, title='newTitle'
ON DUPLICATE KEY UPDATE
title = VALUES(title);