我想单独选择列dr
的行,这些行由计数器变量$i
选择。
以下代码不起作用。我在哪里做错了?
update balance
set dr = 0
where
dr = (select dr from balance order by gp_no asc limit 1 offset 0);
但获得错误:
ERROR 1093 (HY000): You can't specify target table 'balance' for update in FROM clause
答案 0 :(得分:1)
在MySQL中,您可以使用join
:
update balance b join
(select dr from balance order by gp_no asc limit 1 offset 0
) bb
on b.dr = bb.dr
set b.dr = 0;
或者,如果您只想更新一行,则可以直接在更新中使用order by
和limit
:
update balance b
set dr = 0
order by gp_no asc
limit 1;
但是,如果dr
不是唯一的,那么这不会完全等同于您的查询。
答案 1 :(得分:0)
现在正在运作。谢谢@gordon :)。由于我无法编辑你的帖子,这就是为什么我不得不在这里发帖..
update balance b join
(select dr from balance order by gp_no asc limit 1 offset 0
) bb
on b.dr = bb.dr
set b.dr = 0;