delete from weak1 where not exists (select 1 from weak2 where weak1.name=B.name)update weak1 A,weak2 B set A.score1 = B.score2 where A.name = B.name
楼上大侠 (select 1……)这个“1”是?
还有,B中还有新增的name,而A中没有,这些插进去了吗?我比较菜,所以问下……
把 表 weak2 的scroe2 列,按 name 对应更新或插入 如果NAME为主键 OR 唯一KEY,可以考虑用REPLACE INTO解决 否则两条SQL语句解决到 表 weak1 的scroe1 列,删除weak1中有的而weak2中没有的name行。 delete a from weak1 a left join weak2 b on a.name=b.name where b.name is null
EXISTS/NOT EXISTS 后面的子查询,select 1 还是 0 还是其他什么无所谓,exists只是判断这个select是否有结果集。只要有一行记录,EXISTS就为“真”。切忌把EXISTS (SELECT 1 FROM .....)当作是EXISTS (SELECT 0 FROM .....)的反义词。这两句是一样的之所以用select 1主要是为了书写方便,且加快查询速度。
where not exists (select 1 from weak2 where weak1.name=B.name)update weak1 A,weak2 B
set A.score1 = B.score2
where A.name = B.name
如果NAME为主键 OR 唯一KEY,可以考虑用REPLACE INTO解决
否则两条SQL语句解决到 表 weak1 的scroe1 列,删除weak1中有的而weak2中没有的name行。
delete a from weak1 a left join weak2 b on a.name=b.name where b.name is null