Sqlite數據多表聯合update


 其實在Mysql中,多表聯合update不是什么難事。

語法:

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

示例:

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

同樣的,在SqlServer中也可以很簡單的用聯合來實現:

1
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了。

1
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尋求幫助了,下面是一個例子:

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





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM