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 请告诉我
解决方案
不要实现这一点。这带来了数据变得不一致的严重风险。使用视图获取子查询中的计数。
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;
推荐阅读
- typescript - 如何修复错误类型错误:无法读取 null 的属性“0”?
- django - Django:在管理员中“清理”后执行的方法
- google-bigquery - 当小表包含分区列的空值时,使用分区过滤器将小表合并到大表中
- javascript - 当我已经在 catch 块中抛出错误时得到未处理的 Promise 拒绝
- visual-studio-code - 配置 VSCode 快速导航以同时列出节点模块目录中的文件?
- r - 尝试使用 iris 数据集计算 kNN
- angular - 角度推送对象到数组更新或添加新的
- python - 我尝试使用 python 进行 BTC 监控,但它不起作用
- java - 使用 DFS 检测无向图中的循环
- python - 试图在 geopandas 数据框中找到最接近用户输入点的点