更新由id给出的所有已记录的当前记录

时间:2013-11-30 06:11:48

标签: mysql sql sql-update

我希望在我拥有以下sql的特定记录的id时更新我表中的所有记录:

Update table1 SET field2 = field2 + 1 Where id = 129;
Update table1 SET field2 = field2 -1 where feild2 > (SELECT feild2 from table1 WHERE id = 129);

但是MYSQL说你不能在FROM子句

中为更新指定目标表'table1'

有没有办法在同一张桌子上像feild一样更新。

4 个答案:

答案 0 :(得分:1)

通过为子查询提供新别名

来尝试这个
Update table1 SET field2 = field2 -1 where feild2 > 
(SELECT t.feild2 FROM 
(SELECT feild2 from table1 WHERE id = 129) 
t)

答案 1 :(得分:0)

试试这个:

SET @var =(SELECT feild2 from table1 WHERE id = 129);
Update table1 SET field2 = field2 -1 where feild2 > @var;

答案 2 :(得分:0)

SELECT  feild2 from table1 
WHERE id = 129

在第1个查询之上运行,然后在'where'子句中使用主查询中的输出。

答案 3 :(得分:0)

要避免“您无法在FROM子句”中为更新指定目标表'table1',您将使用JOIN。像这样:

Update table1 t1, table2 t2
SET t2.field2 = t2.field2 -1
where t2.feild2 > t1.feild2 
AND t1.id = 129;

你的查询是这样的:

Update table1 SET field2 = field2 -1
       ^^^^^^ <= table1 is here.
where feild2 > (SELECT feild2 from table1 WHERE id = 129);
                                   ^^^^^^ <= but table1 can't be used here.