我有一个包含 4 列 ID、animalid、calvdate 和 AnimalidLactNo 的表,我想添加一个名为 lactationNo 的额外列,当 animalid 的日期发生变化时它会进行计数我会给它一个计数
下面是我的表格
CREATE TABLE `calvingdatecombined` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`animalid` varchar(80) DEFAULT NULL,
`calvDate` varchar(15) DEFAULT NULL
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=65536 DEFAULT CHARSET=latin1;
我的预期输出:
#ID, animalid,calvDate,LactationID
1,ANIM400,2015-10-14,1
2,ANIM400,2015-10-15,2
3,ANIM400,2016-10-14,3
4,ANIM403,2015-10-14,1
5,ANIM404,2015-10-14,1
最佳答案
在 MySQL 版本 < 8.0 中,我们可以 emulate Row number functionality使用 session 变量:
SELECT
dt.ID,
@row_num := IF(@aid <> dt.animalid, 1, @row_num + 1) AS LactationID,
@aid := dt.animalid AS animalid,
dt.calvDate
FROM
(
SELECT
ID,
animalid,
calvDate
FROM calvingdatecombined
ORDER BY animalid, calvDate, ID
) AS dt
CROSS JOIN (SELECT @row_num := 0,
@aid := '') AS user_init_vars
ORDER BY dt.ID
关于mysql - 创建一个列来保持计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52964939/