一括update sql
3121 ワード
大量更新sql|大量update sql 2008年05月21日水曜日16:36大量更新テーブルの場合、updateの1つのテーブルの列に依存する必要があります.この依存はwhere条件句であってもよいし、updateのfieldの値を別のテーブルに依存することもできます.通常、2つの方法があります.ストアド・プロシージャ2を使用する.プログラムコードの中で1つ1つの循環を実行してここで1種のもっと効率的で簡潔な方法を提供して、大量にSQLを更新して、1つのSQLは面倒な循環の過程に取って代わることができて、MS SQLServer、Oracle、DB 2の下の書き方があります--キーポイント:t 4とt 1は同じtableで、primary keyもきっと同じです--そしてそれで関連付けて、このようにselect文の中でupdateの表のfieldsを引用することができます
----------------------------MS SQLServer --------------------------------------
----------------------------Oracle --------------------------------------------
---------------------------------DB2 ------------------------------------------
UPDATE Table1 AS t1
SET (Field1,Field2) = (SELECT Field21, Field22
FROM Table2 t2
INNER JOIN Table3 t3
ON t3.Field31 = t2.Field23
INNER JOIN Table4 t4
ON t3.Field32 = t4.Filed41
WHERE t2.Field24 >= ''
AND t1.fId = t4.fId);
----------------------------MS SQLServer --------------------------------------
UPDATE t1
SET Field1 = Field21, Field2 = Field22
FROM Table2 t2
INNER JOIN Table3 t3
ON t3.Field31 = t2.Field23
INNER JOIN Table4 t4
ON t3.Field32 = t4.Filed41
WHERE ((t2.Field24 >= '')
AND t1.fId = t4.fId);
----------------------------Oracle --------------------------------------------
UPDATE Table1 t1
SET (Field1,Field2) = (SELECT Field21, Field22
FROM Table2 t2
INNER JOIN Table3 t3
ON t3.Field31 = t2.Field23
INNER JOIN Table4 t4
ON t3.Field32 = t4.Filed41
WHERE ((t2.Field24 >= '')
AND t1.fId = t4.fId))
WHERE EXISTS (SELECT Field21, Field22
FROM Table2 t2
INNER JOIN Table3 t3
ON t3.Field31 = t2.Field23
INNER JOIN Table4 t4
ON t3.Field32 = t4.Filed41
WHERE ((t2.Field24 >= '')
AND t1.fId = t4.fId));
---------------------------------DB2 ------------------------------------------
UPDATE Table1 AS t1
SET (Field1,Field2) = (SELECT Field21, Field22
FROM Table2 t2
INNER JOIN Table3 t3
ON t3.Field31 = t2.Field23
INNER JOIN Table4 t4
ON t3.Field32 = t4.Filed41
WHERE ((t2.Field24 >= '')
AND t1.fId = t4.fId))
WHERE EXISTS (SELECT Field21, Field22
FROM Table2 t2
INNER JOIN Table3 t3
ON t3.Field31 = t2.Field23
INNER JOIN Table4 t4
ON t3.Field32 = t4.Filed41
WHERE ((t2.Field24 >= '')
AND t1.fId = t4.fId));