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 请让我知道
答案 0 :(得分:0)
不要实现。这将带来数据不一致的严重风险。使用一个视图在子查询中获取计数。
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;