Mysql两个表混合数据

时间:2016-06-15 11:51:55

标签: php mysql pdo mixed

我有两张桌子:

表1:

ID| Name
1 | firstname1
2 | firstname2
3 | firstname3

表2:

ID| Name
1 | lastname1
2 | lastname2
3 | lastname3

我希望将insert组合table1和table2插入table3示例: 表3:

ID| Fullname
1 | firstname1-lastname1
2 | firstname1-lastname2
3 | firstname1-lastname3
4 | firstname2-lastname1
5 | firstname2-lastname2
6 | firstname2-lastname3
7 | firstname3-lastname1
8 | firstname3-lastname2
9 | firstname3-lastname3

尝试使用php(pdo),但速度非常慢......我必须创建10 000 000条记录(合并后)

我的php:

<?php
//get firstnames, get lastnames before and...
foreach ($firstnames as $firstname) {
    foreach ($lastnames as $lastname) {
        $this->pdo->prepare("INSERT INTO `table3` (`fullname`) VALUES(?)")->execute([$firstname['name'] . '-' . $lastname['name']]);
    }
}

Soo,我如何创建一个混合数据的查询?

Thans

3 个答案:

答案 0 :(得分:0)

使用下面的SQL在table3中插入数据

  INSERT INTO table3(fullname ) SELECT concat( table1.name,'-',table2.name ) FROM table1 CROSS JOIN table2;

答案 1 :(得分:0)

如果你将第三个表的id设置为自动增量,那么这样的东西可能有效。

但是,我对mySQL的方言并不熟悉,所以这可能是也可能不对

INSERT INTO table3 (fullname) 
VALUES( 
    SELECT table1.id, 
           concat( table1.name,'-',table2.name) 
    FROM table1 
    CROSS JOIN table2
)

答案 2 :(得分:-1)

如果你想从不同的表中检索数据并在php中使用它,你可以使用这样的查询。 您应该在每个表中为列添加不同的名称,这总是有用的。

$query = "SELECT
    table1.*,
    table2.*
    FROM
    table1, table2
    WHERE
   table1.id=table2.id
    ";

$ row_query = mysql_fetch_assoc($ query);