ID为主键时:replace into A(id ,name) SELECT id,name1 FROM B;
未设主键时:replace into A(rowid,id,name) SELECT rowid,id,name1 FROM B;
replace是根据pk来进行判断的,如果表没有明确指定pk,那pk就是rowid。
如果A、B表还有其他字段比如sex,age但只需修改NAME时:
replace into A(rowid,id,name,sex,age) select A.rowid,A.id,B.name1,A.sex,A.age from A inner join B on A.id=B.id;[原理将A表的数据集替换成select查询出来的结果集,因为select查询出来的除name是B表的数据其余都是A表本身的数据,所以做替换后相当于只更新了name列。
UPDATE SET A.name=B.name1 FROM A INNER JOIN B ON A.id=B.id
滴答的雨 的方法好象行不通哦 继续求教中......
@志誠: 不会吧,看要求就是这样去实现啊。你执行后的结果有什么不满足要求的呢!只有一部分有值?(有相同id的对应的name都应该会被赋值)
@滴答的雨: 有语法错误
update t set t.title=b.title from t,b where t.id=b.id
试试看
[SQL] update T_TB_SDDR set BJGXSJ=v.gxsj from T_TB_SDDR t,V_HZXX v where t.bjdcbid=v.id
[Err] 1 - near "from": syntax error
SQLite好象这样写有语法错误哦
@志誠: 没用过sqlLite 。 此sql 在sql server 中行得通呢 你在检查你的语句 看看
@_popc: 已经查过了 sqlite不去支持update ... from
如果id是主键,
insert or replace into a(id,name) select a.id, b.name1 from a,b where a.id=b.id