您的位置:首页 > 产品设计 > UI/UE

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐