将mysql列移动到另一个表

时间:2011-09-09 23:06:14

标签: php mysql

我有一个mysql问题。希望你们中的一个可以帮助我!

我有两张相同长度的表格,我希望通过匹配唯一ID()来移动 table_1 列旁边的 table_2 列U_ID )。

我拥有的表结构;

TABLE_1

id - u_id - field_1 - field_2
1  - 123  - abc     - (empty)
2  - 456  - fgd     - (empty)

TABLE_2

id - u_id - field_2
1  - 123  - kjh    
2  - 456  - mnb   

我想要的表格结构;

table_new

id - u_id - field_1 - field_2
1  - 123  - abc     - kjh
2  - 456  - fgd     - mnb

我该怎么做?

...谢谢

6 个答案:

答案 0 :(得分:2)

在mysql提示符下:

INSERT INTO table_new (id, u_id, field_1, field_2) SELECT t1.id, t1.u_id, 
    t1.field_1, t2.field_2 FROM table_1 t1 JOIN table_2 t2 ON (t1.u_id = t2.u_id);

或只是

UPDATE table_1 SET field_2 = (SELECT t2.field_2 FROM table_2 t2 WHERE t2.u_id = table_1.u_id)

答案 1 :(得分:2)

我会使用多表UPDATE语法。

UPDATE table1 JOIN table2 USING (u_id)
SET table1.field_2 = table2.field_2;

答案 2 :(得分:0)

直截了当地在php中完成它。 这里有一些伪代码可以帮助你入门。

   SELECT u_id, field_1 FROM table_1;
   (while results)
   {
            SELECT field_2 FROM table_2 WHERE u_id = ?;

              INSERT INTO table_new VALUES (u_id, field_1, field_2);

  }

答案 3 :(得分:0)

假设您有一个名为query的php函数,通常用于select语句:

$tables = array();
$tables[] = query("DESCRIBE table_1");
$tables[] = query("DESCRIBE table_2");

$sql = "CREATE TABLE `table_new` {";

foreach ($tables as $table) {
  foreach ($table as $col) {
    $sql .= "`".$col['Field']."` ".$col['Type'];
    if ($col['Null'] == "NO") $sql .= " NOT ";
    $sql .= " NULL";
    if ($col['Default'] != "NULL") $sql .= " DEFAULT '".$col['Default']."'";
    $sql .= ", ";
  }
}

$sql .= ")";

这是基本的想法..如果你需要维护外键或触发器,你需要开始查看information_schema.statistics表

答案 4 :(得分:0)

创建table table_new作为select t1.id,t1.u_id,t1.field_1,t2.field2 from table_1 t1 left join table_2 t2 on t1.u_id = t2.u_id;

答案 5 :(得分:0)

首先,创建table_new。然后,使用MySQL SELECT INTO。也许是这样的:

INSERT INTO table_new SELECT table_1.u_id, table_1.field_1, table_2.field_2 
FROM table_1 LEFT JOIN table_2 USING (u_id);