所有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_table1
和copy_table2
。
您看,来自copy_table1
的ID不相等且适合copy_number_id FROM copy_table2
它给我带来了问题。复制表后我怎么能这样做id和copy_number_id相互适合?
答案 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 ');