我希望在我拥有以下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一样更新。
答案 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.