如何在SQL中选择列行

时间:2015-09-16 11:33:40

标签: mysql sql row

我想单独选择列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

2 个答案:

答案 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 bylimit

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;