提问者:小点点

MySQL/PHP合并两个表


如何将两个表合并为一个表?

例如,假设我有一个名为person的表,表名为first_name和last_name,gender,那么我有另一个名为person_d的表,它有first_name,last_name,telephone和email。

新表应该包含first_name,last_name,电话和电子邮件,性别

但是我想用一种自动的方式来实现,甚至不知道字段的名称是什么,只需要使用一个条件

这是可能的sql或我必须做它使用PHP? 我想,我可以创建php脚本和获得字段名称到两个数组,然后比较双打,并将它们添加到新的数组,然后删除它们,之后我们将有没有双打的数组,这是我的代码

    <?php


$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "mydb";



//mysql and db connection

$db = new mysqli($servername, $username, $password, $dbname);

if ($db->connect_error) {  //error check
    die("Connection failed: " . $con->connect_error);
} else {

}


$query1 = $db->query("SELECT * FROM     tablename1");
$query2 = $db->query("SELECT * FROM     tablename2");
$table1 = array();
$table2 = array();
$newtable = array();

while ($property = mysqli_fetch_field($query)) { //fetch table field name

    array_push($table1,$property->name);

}

while ($property = mysqli_fetch_field($query)) { //fetch table field name

    array_push($table2,$property->name);

}


foreach($table1 as $field1) { 
    foreach($table2 as $field2) { 
        if ($field1==$field2)
        {
            array_push($newtable,$field1);
            unset($table1[$field1]);
            unset($table1[$field2]);

        }

    }

}

然后,我用数组中的字段并排创建新表

这是最好的办法还是有其他办法?


共1个答案

匿名用户

这里不需要PHP。 这只能在SQL中完成。

INSERT INTO new_table (first_name, last_name, telephone, email)
SELECT first_name, lastname, telephone, email
FROM person_d;

然后呢

INSERT INTO new_table (first_name, last_name)
SELECT first_name, lastname
FROM person
ON DUPLICATE KEY IGNORE;

这要求您使名字和姓氏的组合是唯一的

当然,您可以更改列的名称。 我想这个练习只能做一次