加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Sqlite数据多表联合update

发布时间:2020-12-12 20:19:36 所属栏目:百科 来源:网络整理
导读:其实在Mysql中,多表联合update不是什么难事。 语法: UPDATE table_references SET col_name1=expr1 [,col_name2=expr2 ...] [WHERE where_definition] 示例: UPDATE table1,table2 SET table1.value=table2.value,a.type=b.type WHERE table1.sid=table2.

其实在Mysql中,多表联合update不是什么难事。

语法:

    UPDATE table_references SET col_name1=expr1 [,col_name2=expr2 ...] [WHERE where_definition]

示例:

    UPDATE table1,table2 SET table1.value=table2.value,a.type=b.type WHERE table1.sid=table2.sid;


同样的,在SqlServer中也可以很简单的用联合来实现:

    UPDATE t1 SET col1=t2.col1 FROM table1 t1 INNER JOIN table2 t2 ON t1.col2=t2.col2;

但是,很可惜,在Sqlite中却不支持这样的语法,那是不是Sqlite中就不支持多表联合update呢?当然不是的,其实Sqlite中多表联合update也可以实现,


首先,Sqlite里面有一个新鲜玩意“INSERT OR REPLACE”,跟Mysql类似,这个结构能够保证在存在的情况下替换,不存在的情况下更新,用这个机制就可以轻松实现Update…From了。

    INSERT OR REPLACE INTO t1(key,Column1,Column2) SELECT t2.key,t2.Column1,t2.Column2 FROM t2,t1 WHERE t2.key = t1.key;
这种方法要避免插入操作,首先要确保是依照主键执行的更新,如果where条件不是主键可能就有点麻烦了。


要是不是主键的更新怎么办能?另外还有其他的办法吗?我们在这中情况下只能向典型的Update…where寻求帮助了,下面是一个例子:

    UPDATE table1 SET col1 = 1 WHERE table1.col2 = (SELECT col2 FROM table2 WHERE table2.col2 = table1.col2 AND table2.col3 = 5);


参考:

http://note.sdo.com/u/634649413188425943/n/u0pzn~k92p6iwE2ss009b4

http://www.52php.cn/article/p-bduvgqoy-q.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读