我想从我的一个表中插入值到另一个表。
我有一张桌子:
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
);
结果将是“出生”类型的行为与“死亡”类型行为之间的区别
我将不胜感激。
答案 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;