【问题标题】:inserting values to new table in mysql_query在 mysql_query 中将值插入新表
【发布时间】:2013-09-24 07:01:42
【问题描述】:

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

【问题讨论】:

  • 但可以在 mysql 中进行。
  • 你想在这里完成什么?如果您尝试将 save_number 链接到数字,则该表中还需要有一个 number_id,或者您是否根据实际数字进行链接? save_subnumber 实际上应该存储什么?来自 save_number 的 id 作为 number_id?

标签: php mysql insert


【解决方案1】:

您的第一个查询可以更改为

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

【讨论】:

  • 伙计,最后一行有问题。 sn 中没有 number_id (save_number)
  • 应该是s.number_id
  • 如果数字的计数>1 那么子数字的计数等于数字的计数 * 2 如何解决?
  • 尝试使用 SELECT DISTINCT
【解决方案2】:

如果您只想将一个表复制到另一个表中,为什么不使用这样的东西

INSERT INTO save_number SELECT * FROM number;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多