仅比较最新记录

时间:2019-04-10 11:20:15

标签: mysql

我想创建一个触发器,如果​​满足条件,则将新记录更新到第二个表

TableA

#ID,animalid,calvdate,lactation
1,animal1, 2016-03-15,1
2,animal1, 2017-06-09,2

TableB
#animalid, calvdate, milkmorning, milkevening
animal1,2017-07-09,2,2
animal1,2018-08-27,3,3

我想将新的正确日期更新为表格。以下是我的查询

SELECT animalid,calvdate,lactation FROM tableB
inner join tableA on tableB.animalid = tableA.animalid
where TO_DAYS(tableA.calvdate) -TO_DAYS(tableB.calvdate) > 400
group by animalid and calvdate

Expected Output 

  #ID,animalid,calvdate,lactation
    1,animal1, 2016-03-15,1
    2,animal1, 2017-06-09,2
    3,animal1, 2018-08-27,3

注意:必须自动生成哺乳期

预期输出有3条记录,因为与新的日期相比,新的日期更符合条件且超过400天

1 个答案:

答案 0 :(得分:0)

我在这里承担了几件事。

1。每个动物ID的泌乳量将分别增加。 2.如果差异大于400天,则只需与每个动物ID中的最新cal齿动物进行比较,并从B中插入记录。

<insert into A>
SELECT B.animalid,B.calvdate,init.lactation
FROM 
(SELECT MAX(calvdate) as calvdate, animalid FROM tableB GROUP BY animalid) B
left join 
(SELECT MAX(calvdate) as calvdate, MAX(lactation) + 1 as lactation, animalid FROM tableA GROUP BY animalid) init
on 
B.animalid = init.animalid
AND DATEDIFF(B.calvdate,init.calvdate) > 400
WHERE init.animalid IS NOT NULL

您可以在此处查看此内容的SQL Server模拟:https://rextester.com/BLT38001