id animal type value
1 Dog Land 11
2 Fish Water 102
3 Horse Land 12
4 Duck Water 104
5 Crocodile Water 105
6 Donkey Land 13
7 Buffalo Land 14
如果再插入一条记录,如何增加该值,当type=land时,它会增加到15 和
再插入一条记录,当type=water时,它会增加到106 请告诉我
最佳答案
不要实现这一点。这会带来数据不一致的严重风险。使用 View 获取子查询中的计数。
ALTER TABLE elbat
DROP value;
CREATE VIEW elbat_with_value
AS
SELECT t1.id,
t1.animal,
(SELECT count(*)
FROM elbat t2
WHERE t2.id <= t1.id
AND t2.type = t1.type) value
FROM elbat t1;
或者在 MySQL 版本 8 中,您可以使用 row_number()
。
ALTER TABLE elbat
DROP value;
CREATE VIEW elbat_with_value
AS
SELECT t1.id,
t1.animal,
row_number() OVER (PARTITON BY t1.type
ORDER BY t1.id) value
FROM elbat t1;
关于mysql - mysql 中列类型自动递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55969562/