mysql中列类型的自动递增

时间:2019-05-03 12:13:17

标签: mysql

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 请让我知道

1 个答案:

答案 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;