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个回答

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

sld22525482
「已注销」 我分开写了一下是实现不了的一起写也不行。。。直接崩了
大约 4 年之前 回复
sld22525482
「已注销」 想问以下一下这是一条语句?全部放在execSQL()里面?还是?
大约 4 年之前 回复

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) ;

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐