好的伙计们,我会尝试分享我的猜测是可以理解的。所以我有2个表如下: 来自TABLES的所有ID都是自动增量。
Number
id number
10 100
11 102
12 105
13 106
subnumber
id number_id subnumber
52 10 10
53 11 15
54 13 40
您会看到一些数字(并非所有数字)都有子编号。我的意思是:
从表number
中,id = 13的数字具有子编号,并且等于40。
我想将此表保存在另一个表中。
$sql1=mysql_query('SELECT number FROM number');
$while(fetch1=mysql_fetch_array($sql1))
{
mysql_query('
INSERT INTO `save_number` (number)'
VALUES ('.$fetch1['number'].');
);
}
save_number
id number
100 100
101 102
102 105
103 106
现在我要将表(子编号)保存在另一个表中(save_subnumber)
$sql2=mysql_query('SELECT number_id, subnumber FROM subnumber');
$while(fetch2=mysql_fetch_array($sql2))
{
mysql_query('
INSERT INTO `save_subnumber` (number_id, subnumber)'
VALUES ('.$fetch2['number_id'].', '.$fetch2['number'].');
);
}
save_subnumber
id number_id subnumber
60 10 10
61 11 15
62 13 40
因此,您会看到number_id FROM save_subnumber不等于新插入的ID FROM save_number。如果有人帮助我,我会被贬低。顺便说一句,我仍在使用mysql_query。我找不到时间将我的SQL改进为PDO:)
答案 0 :(得分:2)
您的第一个查询可以更改为
INSERT INTO
save_number (number)
SELECT
number
FROM
number
这将节省您使用PHP迭代行并且会更快。很多。
考虑到这一点,您的第二个查询将是
INSERT INTO
save_subnumber (number_id, subnumber)
SELECT DISTINCT
sn.id, s.subnumber
FROM
saved_number AS sn
CROSS JOIN
number AS n
USING (number)
INNER JOIN
subnumber AS s
ON
n.id = s.number_id
答案 1 :(得分:1)
如果你只是想在另一张桌子上复制一张桌子,为什么不用这样的东西
INSERT INTO save_number SELECT * FROM number;