如何处理来自一个表的数据并将其插入MySQL中的另一个表?

时间:2014-06-11 01:52:01

标签: mysql procedure

我想从我的一个表中插入值到另一个表。

我有一张桌子:

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

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

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

结果将是“出生”类型的行为与“死亡”类型行为之间的区别

我将不胜感激。

1 个答案:

答案 0 :(得分:1)

这在评论中写得太久了,它不是现在问题的答案,但这是我的建议。为什么不在同一张桌子上有一个出生专栏和一个死亡专栏?我个人会这样做:

  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中的结果之外的其他任何东西,因为你可以参考法案中的地址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;