mysql - MySQL如何处理一张表中的数据并将其插入到另一张表中?

标签 mysql procedure

我想将值从一个表插入另一个表。

我有一个下表:

  Act (
  id  INT NOT NULL AUTO_INCREMENT,
  type VARCHAR(20),
  Act_date DATETIME,
  place VARCHAR(20)  
  );

其中 type 有 2 个可能的值:“出生”和“死亡”。所有列均已填满。 现在,我正在尝试创建一个过程或函数来计算给定时间内“出生”类型的行为和“死亡”类型的行为之间的差异,并将结果放入不同的表中,例如:

  Population_Growth(
  id INT NOT NULL AUTO_INCREMENT,
  time DATE,
  place VARCHAR(20),
  result INT
  );

其中结果是“出生”类型的行为和“死亡”类型的行为之间的差异

如果有任何帮助,我将不胜感激。

最佳答案

这太长了,无法写在评论中,这不是您现在问题的答案,但这是我的推荐。为什么不在同一个表中只包含出生列和死亡列呢?就我个人而言,我会这样做:

  Act (
  id  INT NOT NULL AUTO_INCREMENT,
  birth_date DATETIME,
  death_date DATETIME,
  place VARCHAR(20)  
  );

  Population_Growth(
  id INT NOT NULL,
  result INT
  );

两者都将 ID 作为主键,在人口增长中将 ID 作为外键。除了 Population_Growth 中的结果之外,您不需要任何其他内容,因为您可以引用 Act 中该地点的 ID。避免在 SQL 中重复数据,除非您有充分的理由这样做。

然后您可以使用 Act 表中的信息进行插入。 TIMESTAMPDIFF 将返回两个日期之间的差值的整数。我不确定你是否想要年、月、秒等。

INSERT INTO Population_Growth 
SELECT id, TIMESTAMPDIFF(YEAR, death_date, birth_date) FROM Act 
WHERE death_date IS NOT NULL AND birth_date IS NOT NULL;

关于mysql - MySQL如何处理一张表中的数据并将其插入到另一张表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24153489/

相关文章:

php - 获取mysql中某个字段的最后一个值

ios - 在 IOS 上使用 WebService

sql - 在 Oracle 10g 中将行旋转到列

mysql - 更新程序 输入参数中的列不正确/未知

mysql - 如何在 MYSQL 查询中使用聚合函数连接表?

mysql复制列并转换字符串

php - 在 PHP 中添加到数据库中的字段总数

mysql - 来自同一个表的多个外键

PHP 和 MySQL 安全 Web 应用程序 - 整个网站作为单个 index.php 文件是或否?

mysql - 在 MySql 中创建过程时错误使用 UNION 和 INTO