How to update multiple columns of one table using values from another table?
2011-11-04 20:56
961 查看
A common, standard SQL way of doing this is:UPDATE dest_table t1SET field1 = (select field1 from src_table t2 where t2.pk = t1.pk),field2 = (select field2 from src_table t2 where t2.pk = t1.pk),...etc.WHERE EXISTS (select 1 from src_table t2 where t2.pk = t1.pk)If you are using Firebird 2, you can use EXECUTE BLOCK to write a more effective statement:EXECUTE BLOCKASDECLARE VARIABLE field1 type;DECLARE VARIABLE field2 type;...etc.DECLARE VARIABLE pk type;BEGINfor select pk, field1, field2, ... from src_tableinto :pk, :field1, :field2, ...do update dest_table set field1 = :field1, field2 = :field2, ...where pk = :pk;ENDIf you are using Firebird 1.x, you could write a stored procedure to do the job.Beside direct SQL you can use some tool like FBExport that allows you to have better error handling (it's easier to detect the exact row and column that fails to update). Here's FBExport example, first export data to a file:fbexport -S -Q "select pk, field1, field2, ... from src_table" -F test.fbxThen, import into the other table:fbexport -If -Q "update dest_table set field1 = :2, field2 = :3, ... where pk = :1" -F test.fbxFBExport is an open source tool. The download for latest version is here:http://www.firebirdfaq.org/fbexport.php
相关文章推荐
- Using ASP.NET and jQuery to Pass Multiple Values from a GridView to Another Page
- How to (how to refresh/redirect the contents of one frame from another frame )
- How to get the Values of Selected Row from a Gridview using ASP.NET
- 从一个表的数据拷贝到另一个表,Copy all columns from one table to another table:
- How to call an Oracle Stored Procedure that returns one or more REF CURSORS, using ADO from C++ How
- Update data in one table with data from another table
- How Can One Transfer Xcode 4 Code Snippets from One Machine to Another
- Insert Data From One Table to Another
- How to copy values of an array into another array
- How to export/import data with LOB type from one user/schema to another
- How to move a root volume from one storage system to another.
- How to Export and Import the AWR Repository From One Database to Another (文档 ID 785730.1)
- How to get the password text in a text with password property from another process using C++ - 用C++如何从不同进程获取密码框文本
- How to run multiple instances of Tomcat in one Windows machine
- How to dynamically set limit_choices_to for ManyToManyField using values from an instance? - Google Groups
- In Android how to display one view as overlay on top of another view?
- Server.Transfer : Passing values from one page to another page
- How To Copy a System Image from One Device to Another
- How to move RAC Database ORACLE_HOME from one location to another one (Doc ID 1438719.1)
- Copy a table from one database to another in SQL Server 2005