IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]MySQL数据库update更新子查询

    undoner发表于 2015-04-24 18:00:28
    love 0

    比如:

    UPDATE test.tb_vobile a
    set a.name = '111 '
    WHERE
    a.id = (select max(id) id from test.tb_vobile)

    报错:

    [SQL]UPDATE test.tb_vobile a
    set a.name = '111 '
    WHERE
    a.id = (select max(id) id from test.tb_vobile)


    [Err] 1093 - You can't specify target table 'a' for update in FROM clause


    以下可通过:

    UPDATE test.tb_vobile a
    join
    (select max(id) id from test.tb_vobile) b
    on a.id = b.id
    set a.name = '123 ';
    或

    UPDATE test.tb_vobile a ,(select max(id) id from test.tb_vobile) b
    set a.name = '321 '
    WHERE
    a.id = b.id ;

    说明:

    1、update 时,更新的表不能在set和where中用于子查询;
    2、update 时,可以对多个表进行更新(sqlserver不行);
    如:update ta a,tb b set a.Bid=b.id ,b.Aid=a.id;
    3、update 后面可以做任意的查询,这个作用等同于from;



沪ICP备19023445号-2号
友情链接