2014-12-05 48 views
1

相等的值更新列我有一个简单的表是这样的:在同一个表

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

哪个dbms,是mysql吗? – radar 2014-12-05 02:10:56

+0

是的,我添加了标签。 – Hans 2014-12-05 02:11:40

回答

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' 
+0

'+ 1'。加入是首选方式。 – 2014-12-05 02:15:50

0
INSERT INTO Table 
    SET id=1, title='newTitle' 
ON DUPLICATE KEY UPDATE 
     title = VALUES(title);