sld22525482
「已注销」
采纳率12.6%
2016-07-07 07:05 阅读 2.2k

JAVA求一条更新表数据的SQL语句

有两个表A和B, A表的内容是 id=67,tops=600 id=68,tops=522这两条数据,B表的内容是id=68,tops=566 想实现的是把A表中和B表ID相同的项的数据更新为B表中对应ID的项的数据 得到新的A表 id=67,tops=600 id=68,tops=566

然后我执行了下面这条语句db.execSQL("UPDATE A set tops = (select tops from B where id in(select id from B))");得到的结果却是 id=67,tops=566,id=68,tops=566 这样的!请问正确的更新语句要怎么写?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • yicp123 yicp123 2016-07-07 07:22

    update tablea a
    inner join tableb b on a.id=b.id
    set a.tops=b.tops;

    参考自:
    mysql多表更新(跨表更新) http://www.data.5helpyou.com/article252.html

    点赞 评论 复制链接分享
  • hellozhihua 我等了许久 2016-07-07 09:02

    UPDATE A set tops = (select tops from B where id in(select id from A)) where id in (select id from B);
    如果数据量比较大的情况下:
    可以优化成:
    update A a set tops= (select tops from B b where id= a.id) where EXISTS (select 1 from B bb where bb.id = a.id) ;

    点赞 评论 复制链接分享
  • lovebosom 猩猩之火 2016-07-07 09:49

    UPDATE A a set tops = (select tops from B where id=a.id )
    已验证通过。

    点赞 评论 复制链接分享

相关推荐