在mysql和php中合并两个表的更有效方法?

在mysql和php中合并两个表的更有效方法?,php,mysql,Php,Mysql,我有两个包含类似信息的表。举个简单的例子,我有以下几点: table1 id|date|info1 table2 id|date|info2 SELECT table1.id,table1.date,table1.info1,table2.info2 FROM table1 as temp1 JOIN table2 as temp2 ON table1.id=table2.id AND table1.date=table2.date 我想把这两个表合并成一个,这样它就可以 table3

我有两个包含类似信息的表。举个简单的例子,我有以下几点:

table1  id|date|info1
table2  id|date|info2
SELECT table1.id,table1.date,table1.info1,table2.info2
FROM table1 as temp1
JOIN table2 as temp2
ON table1.id=table2.id AND table1.date=table2.date
我想把这两个表合并成一个,这样它就可以

table3 id|date|info1|info2
我尝试了以下方法:

table1  id|date|info1
table2  id|date|info2
SELECT table1.id,table1.date,table1.info1,table2.info2
FROM table1 as temp1
JOIN table2 as temp2
ON table1.id=table2.id AND table1.date=table2.date
然后循环选择并相应地更新

它可以工作,但速度很慢。我想知道是否有更好的方法来做到这一点。

您可以像这样使用CTA(按选择创建表):

CREATE TABLE YourMergedTable AS
SELECT table1.id,table1.date,table1.info1,table2.info2
FROM table1 as temp1
JOIN table2 as temp2
ON table1.id=table2.id AND table1.date=table2.date
MySQL将检测查询结果字段的类型,并相应地生成一个表结构

如果您已经有一个表,或者出于任何其他原因希望显式创建它,您仍然可以像这样插入记录:

INSERT INTO YourMergedTable(ID, Date, Info1, Info2) /* These are the fieldnames in the  table */
SELECT table1.id,table1.date,table1.info1,table2.info2
FROM table1 as temp1
JOIN table2 as temp2
ON table1.id=table2.id AND table1.date=table2.date
您可以像这样使用CTA(按选择创建表):

CREATE TABLE YourMergedTable AS
SELECT table1.id,table1.date,table1.info1,table2.info2
FROM table1 as temp1
JOIN table2 as temp2
ON table1.id=table2.id AND table1.date=table2.date
MySQL将检测查询结果字段的类型,并相应地生成一个表结构

如果您已经有一个表,或者出于任何其他原因希望显式创建它,您仍然可以像这样插入记录:

INSERT INTO YourMergedTable(ID, Date, Info1, Info2) /* These are the fieldnames in the  table */
SELECT table1.id,table1.date,table1.info1,table2.info2
FROM table1 as temp1
JOIN table2 as temp2
ON table1.id=table2.id AND table1.date=table2.date
您可以像这样使用CTA(按选择创建表):

CREATE TABLE YourMergedTable AS
SELECT table1.id,table1.date,table1.info1,table2.info2
FROM table1 as temp1
JOIN table2 as temp2
ON table1.id=table2.id AND table1.date=table2.date
MySQL将检测查询结果字段的类型,并相应地生成一个表结构

如果您已经有一个表,或者出于任何其他原因希望显式创建它,您仍然可以像这样插入记录:

INSERT INTO YourMergedTable(ID, Date, Info1, Info2) /* These are the fieldnames in the  table */
SELECT table1.id,table1.date,table1.info1,table2.info2
FROM table1 as temp1
JOIN table2 as temp2
ON table1.id=table2.id AND table1.date=table2.date
您可以像这样使用CTA(按选择创建表):

CREATE TABLE YourMergedTable AS
SELECT table1.id,table1.date,table1.info1,table2.info2
FROM table1 as temp1
JOIN table2 as temp2
ON table1.id=table2.id AND table1.date=table2.date
MySQL将检测查询结果字段的类型,并相应地生成一个表结构

如果您已经有一个表,或者出于任何其他原因希望显式创建它,您仍然可以像这样插入记录:

INSERT INTO YourMergedTable(ID, Date, Info1, Info2) /* These are the fieldnames in the  table */
SELECT table1.id,table1.date,table1.info1,table2.info2
FROM table1 as temp1
JOIN table2 as temp2
ON table1.id=table2.id AND table1.date=table2.date

这将产生id | date | info1 | info2的结果

    SELECT id, date, info1 AS info1, NULL AS info2 FROM table1
    UNION
    SELECT id, date, NULL AS info1, info2 AS info2 FROM table2
要将结果插入表3,您可以执行以下操作

    INSERT INTO table3
    SELECT id, date, info1 AS info1, NULL AS info2 FROM table1
    UNION
    SELECT id, date, NULL AS info1, info2 AS info2 FROM table2

这将产生id | date | info1 | info2的结果

    SELECT id, date, info1 AS info1, NULL AS info2 FROM table1
    UNION
    SELECT id, date, NULL AS info1, info2 AS info2 FROM table2
要将结果插入表3,您可以执行以下操作

    INSERT INTO table3
    SELECT id, date, info1 AS info1, NULL AS info2 FROM table1
    UNION
    SELECT id, date, NULL AS info1, info2 AS info2 FROM table2

这将产生id | date | info1 | info2的结果

    SELECT id, date, info1 AS info1, NULL AS info2 FROM table1
    UNION
    SELECT id, date, NULL AS info1, info2 AS info2 FROM table2
要将结果插入表3,您可以执行以下操作

    INSERT INTO table3
    SELECT id, date, info1 AS info1, NULL AS info2 FROM table1
    UNION
    SELECT id, date, NULL AS info1, info2 AS info2 FROM table2

这将产生id | date | info1 | info2的结果

    SELECT id, date, info1 AS info1, NULL AS info2 FROM table1
    UNION
    SELECT id, date, NULL AS info1, info2 AS info2 FROM table2
要将结果插入表3,您可以执行以下操作

    INSERT INTO table3
    SELECT id, date, info1 AS info1, NULL AS info2 FROM table1
    UNION
    SELECT id, date, NULL AS info1, info2 AS info2 FROM table2

你意识到你可以做
插入到。。。从…中选择。
?例如,将查询结果填入表格。不,我没有意识到!它是否考虑了连接的概念?它将插入查询的任何结果。加入与否。是的。你意识到你可以做
插入到。。。从…中选择。
?例如,将查询结果填入表格。不,我没有意识到!它是否考虑了连接的概念?它将插入查询的任何结果。加入与否。是的。你意识到你可以做
插入到。。。从…中选择。
?例如,将查询结果填入表格。不,我没有意识到!它是否考虑了连接的概念?它将插入查询的任何结果。加入与否。是的。你意识到你可以做
插入到。。。从…中选择。
?例如,将查询结果填入表格。不,我没有意识到!它是否考虑了连接的概念?它将插入查询的任何结果。加入与否。是的。