在同一个表中更新具有相等值的列

时间:2014-12-05 02:06:02

标签: mysql sql

我有一个像这样的简化表:

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来更新同一个表中具有相同值的列?

2 个答案:

答案 0 :(得分:4)

MySQL不允许您在updatedelete的子查询中使用正在更新的表。 您可以改用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);