在mysql_query中向新表插入值

时间:2013-09-24 07:01:42

标签: php mysql insert

好的伙计们,我会尝试分享我的猜测是可以理解的。所以我有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:)

2 个答案:

答案 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;