mysql整合有关联的两个数据表里的字段
在整合两个数据表时,要把B表的一个字段整合到A表中来,B表有A表的主键的外键。
有两种方法(目标表TableA,来源表TableB):
1、通过程序(通过php实现),分两步实现
a.查询目标表里所有的id号,放到一个数组里$arrid
b.遍历$arrid,根据id号,从备份表里取出对应id的记录,取目标字段值$column,赋值给目标表的对应字段
ps:若数据量太大,有可能会出现运行超时,这是也可以通过更改php的最大执行时间才解决。
php文件:copdb.php
1 <?php 2 require "conntodb.php"; 3 4 function copdb($sql){ 5 $result = mysql_query($sql); 6 if ($result) { 7 return $result; 8 }else{ 9 return "error"; 10 } 11 } 12 ?>
php文件:dbModel.php
1 <?php 2 require "copdb.php"; 3 4 function select(){ 5 $sql = "select * from TableA"; 6 $result = copdb($sql); 7 return $result; 8 } 9 10 function update($id){ 11 $result = find($id); 12 $field1 = "null"; 13 while ($row = mysql_fetch_array($result)) { 14 $field1 = $row[‘field1‘]; 15 } 16 $sql = "update TableA set field1 =‘".$field1 ."‘ where id=‘".$id."‘"; 17 $result = copdb($sql); 18 } 19 20 function find($id){ 21 $sql = "select * from TableB where ta_id=".$id; 22 $result = copdb($sql); 23 return $result; 24 } 25 ?>
php文件:select.php
1 <?php 2 /* 3 查询主表里所有的id号,放到一个数组里$arrid 4 遍历$arrid,根据id号,从副表里取出对应的字段值$column 5 根据id号,把$column插入到主表对应的列里 6 ---------------------------------------------------- 7 8 */ 9 require "dbModel.php"; 10 //查询目标表里的所有id号 11 function selectallid(){ 12 $result = select(); 13 $arr = array(); 14 while ($row = mysql_fetch_array($result)) { 15 $arr[] = $row["id"]; 16 } 17 return $arr; 18 } 19 20 21 22 //遍历id数组,执行更新操作 23 function bianliid(){ 24 $arr = selectallid(); 25 for ($i=0; $i < count($arr); $i++) { 26 update($arr[$i]); 27 } 28 } 29 bianliid(); 30 31 ?>
2、通过sql语句:
UPDATE TableA AS ta,TableB AS tb SET ta.field1 = tb.field1 WHERE ta.id = tb.ta_id
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。