update中加入select最常用的update語法
阿新 • • 發佈:2019-01-27
我們經常用的update語法是:
update table_name set column_name1 = value1, set column_name =value2
當需要拿出很多列時,這麼寫就會很麻煩,那麼,能否像insert一樣,通過select來執行update操作呢,其實是可以的。具體語法如下:
UPDATE <table_name> <alias>
SET (<column_name>,<column_name> ) = (
SELECT (<column_name>,
<column_name>)
FROM
<table_name>
WHERE
<alias.column_name> = <alias.column_name>)
WHERE <column_name> <condition> <value>;
當where和set都需要關聯一個表進行查詢時,整個update執行時,就需要對被關聯的表進行兩次掃描,顯然效率比較低。
對於這種情況,Sybase和SQL SERVER的解決辦法是使用UPDATE...SET...FROM...WHERE...的語法,實際上就是從源表獲取更新資料。
在 SQL 中,表連線(left join、right join、inner join 常常用於 select 語句,其實在 SQL 語法中,這些連線也是可以用於 update 和 delete 語句的,在這些語句中使用 join 還常常得到事半功倍的效果。
Oralce和DB2都支援的語法:
UPDATE A SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)