mysql - mysql 中列类型自动递增

标签 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 请告诉我

最佳答案

不要实现这一点。这会带来数据不一致的严重风险。使用 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/

相关文章:

php - 从两个表中获取数据时显示错误警告:mysqli_fetch_array()期望参数1为mysqli_result,在中给出 bool 值

php - 选择多行并连接成一个 - 在 joomla

mysql - 使用 JSP 访问数据库

mysql - MY sql 查询查找 # 状态

MySQL order by convert varchar as unsigned 并将 "0"排序到最后

mysql - 制作新的 Rails 应用程序时出错

mysql - 查询中的内连接不起作用

mysql - 如何连接同一个表中的多个列?

php - PDO连接: row count using where clause

mysql - 在SQL中选择具有相同ID的另一行时字段的聚合总和