在PHP SQL上复制表时发出问题

时间:2013-09-28 07:18:52

标签: php mysql sql insert

所有id都是auto_increment。我会尝试解释我的问题是可以理解的。我只想将2个表复制到另外2个表中。我的表格如下:

table1

id  number

10   100
11   102
12   105
13   106

table2

id  number_id   subnumber

52     10           10
53     11           15
54     13           40

你可以看到有一些数字的子编号。例如,来自table1的WHERE id = 11在table2上有一个子编号,它等于15.现在我应该将table1复制到表格中:copy_table1

$sql1 = mysql_query('INSERT INTO
          copy_table1 (copy_number)
        SELECT
          number
        FROM
          table1');

copy_table1的结果是:

copy_table1

id      copy_number
100      100
101      102
102      105  
103      106

然后我应该将table2复制到另一个表格copy_table2

$sql2 = mysql_query('INSERT INTO
          copy_table2 (copy_number_id, copy_subnumber)
        SELECT
          number_id, copy_subnumber
        FROM
          table2');

copy_table2的结果是:

id  copy_number_id   copy_subnumber
60        10              10
61        11              15
62        13              40

所以,让我们检查一下表:copy_table1copy_table2。 您看,来自copy_table1的ID不相等且适合copy_number_id FROM copy_table2 它给我带来了问题。复制表后我怎么能这样做id和copy_number_id相互适合?

1 个答案:

答案 0 :(得分:1)

$sql2=mysql_query('INSERT INTO
   copy_table2 (copy_number_id, copy_subnumber)
SELECT DISTINCT
   cp1.id, t2.subnumber
FROM
   copy_table1 AS cp1
CROSS JOIN
   table1 AS t1
USING (number)
INNER JOIN
   table2 AS t2
ON
   t1.id = t2.number_id ');