【问题标题】:Mysql/PHP Merge two tablesMysql/PHP 合并两张表
【发布时间】:2020-06-15 12:00:53
【问题描述】:

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

例如,假设我有一个名为 person 的表,其中包含 first_name 和 last_name,gender,然后我有另一个名为 person_d 的表,其中包含 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]);

        }

    }

}

然后我创建新表,并排排列来自数组的字段

这是最好的方法还是有其他方法可以做到这一点?

【问题讨论】:

  • 请不要只求我们为您解决问题。向我们展示您是如何尝试自己解决问题的,然后向我们确切展示结果是什么,并告诉我们您为什么觉得它不起作用。向我们明确解释什么不起作用并提供a Minimal, Complete, and Verifiable example。阅读How to Ask 一个好问题。请务必take the tour 并阅读this
  • 为什么要 - 第二个表似乎包含第一个表中的所有内容?
  • 我之前试过写一些代码,我会编辑我的问题并向你展示我做了什么
  • @AbdessamadBen- 请清除一件事,您是否需要在新表中使用两次 last_name 而只需要一次 first_name?
  • 这只是一个复制粘贴错误,我会纠正的,谢谢

标签: php mysql


【解决方案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;

这要求您将名字和姓氏的组合设为唯一

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

【讨论】:

  • 是的,但问题是我想在不知道字段名称的情况下这样做
  • 以 SELECT 开头的行中的名称可以替换 PHP 变量的列名。你不能依赖 SELECT * 或任何不指定列名的东西。我总是想知道如何可以动态创建表。它们应该保持原样,永不改变
  • 知道了,但如果可以检查我的脚本以了解我想要做什么
  • 你可以解决这个问题,通过使用列的名称并在你询问用户的地方填写一个表单:我有这些列名称:名字、街道、标题、姓氏。请填写 Firstname 的 col 是什么。但是如何知道表的名称,而不知道它的列名?
猜你喜欢
  • 2013-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-21
  • 2012-12-15
  • 1970-01-01
  • 2019-11-15
相关资源
最近更新 更多