登录 立即注册

首页 > 绿虎论坛 > 建站 > 讨论/求助 (发帖)

标题: Mysql问题,创建唯一ID

作者: @Ta

时间: 2022-11-11

点击: 12653

现有一张表,名(topic)
id tid sid title content 

id为自增,现在需要创建一个基于sid的自增id,如下图所示

第一条数据
id(1),sid(1),tid(T_1),title(标题),content(内容)
第二条数据
id(2),sid(1),tid(T_2),title(标题),content(内容)
第三条数据
id(3),sid(1),tid(T_3),title(标题),content(内容)
第四条数据
id(4),sid(2),tid(T_1),title(标题),content(内容)
第五条数据
id(5),sid(2),tid(T_2),title(标题),content(内容)


一般来说tid
SELECT COUNT(sid) FROM topic
就能得到sid发布内容的数量
然后结果+1,即可

但是这样有概率会重复(我猜的),也不能删除数据,如果删除第四条再插入就会变成tid = T_2

或者用子SQL

用MAX(tid)然后在。。。。

想不通

[隐藏样式|查看源码]


『回复列表(8|隐藏机器人聊天)』

1. 所以问题就在于你这个id又不能用自增,也不能用雪花id或者uuid!
不过有个简单的方法就是数据不能真的删除,做个逻辑删除,但实际上这条数据还在数据库只不过被标记为删除,不展示出来。加个字段delete来标记即可,count的时候被标记为删除的也统计进去!!!
(/@Ta/2022-11-11 12:50//)

2. 不过显然使用count数量+1作为新id是不合理的,删除必然会导致重复,,比如添加了3条数据 T1,T2,T3此时删除T2数据,在次Count + 1插入的数据必然是T3,和已有的重复!
(/@Ta/2022-11-11 12:46//)

3.

看不懂这是个啥需求啊。。

(/@Ta/2022-11-11 13:57//)

4. 插入数据之前还要查询一下会不会很废性能?
(/@Ta/2022-11-12 03:16//)

5.

先说一个反向思路,直接新增几十万空数据,sid直接完成分配,新增内容的时候取一条空内容的数据update
另一个方法相对简单,用触发器

(/@Ta/2022-11-12 08:43//)

6.

同一楼,只增不删!
在这里,每天60秒读懂世界!

(/@Ta/2022-11-12 09:18//)

7. 首先,重复是有可能的。我觉得的解决方法是:可不可以将sid和自增的id用某种算法关联起来,因为id具有自增唯一性,如果将其以某种方式关联起来,那肯定也是唯一值了
(/@Ta/2022-11-20 14:57//)

8.
和我之前想的差不多,把sid作为自增就好了,ID作为字段即可 
yourTail
(/@Ta/2022-11-26 20:25//)

回复需要登录

11月23日 18:31 星期六

本站由hu60wap6华为CPU驱动

备案号: 京ICP备18041936号-1