mysql重置自增主键坑
发表于|更新于
|浏览量:
商人的兴趣就在那些能找到财富的地方。——埃伯克
今天重置mysql自增主键时遇到个坑,明明sql执行了
1 | ALTER TABLE table_name AUTO_INCREMENT= 1; |
但还是修改失败了
后来发现原来是因为当前表最大id比我设置的自增id大导致的
而且这种情况还不报错,提示sql正常执行,就挺坑的
最后把表内数据调整了,成功重置自增id
可以通过
1 | SHOW TABLE STATUS WHERE NAME = 'user'; |
查看表状态
相关推荐
2020-08-14
mysql join
首先先放张图 今天聊聊mysql表join连接,其本质是拿主表每条数据取出来和子表每行数据进行循环比较,如果满足则返回,不满足返回null 首先是内连接 两者之间取交集,两边都满足返回,不满足不返回 语法很简单 1234567SELECT * FROM tb_goods a INNER JOIN tb_goods_desc b WHERE a.id = b.goods_id 其中,INNER可以省略掉只写个JOIN 然后是左外连接 左外连接,此时可以理解为理解 左表为主表,右表为子表。在条件不满足时,左表数据存在,右表数据为null 简单来说就是结果集包含左表所有行,右表不匹配则为null 12345SELECT * FROM sp_user a LEFT OUTER JOIN tb_seller b ON a.seller_id = b.seller_id 其中,OUTER可省略 反向操作一波就是右外连接 1234567SELECT * FROM tb_seller a RIGHT OUTER JOIN sp_user b ON a.seller_id = b.sell...
2023-06-06
加唯一索引时候发现已有重复数据删除
说话随便的人,便是没有责任心。——哈代 sql如下 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677-- 查询重复数据idSELECT GROUP_CONCAT( id SEPARATOR ',' )FROM `my_table` GROUP BY `user_id`, `depart_id`, `position_id` HAVING COUNT(*) > 1 AND `user_id` IS NOT NULL AND `depart_id` IS NOT NULL AND `position_id` IS NOT NULL;-- 查询需要删除掉的重复数据SELECT t1.`id`, t1.`user_id`, t1.`depart_id`, t1.`position_id`, t1.`gmt_create...
2022-02-06
INSERT ... ON DUPLICATE KEY UPDATE Statement
打开mysql文档,总会有新发现。——碧安瑶 我们在使用INSERT语句时,有时会有这样的需求,不存在就新增,存在就更新 此时我们可以使用INSERT ... ON DUPLICATE KEY UPDATE语句 就像mysql官方文档中提到的那样,我们如果将a列设为UNIQUE唯一索引或者主键时,并且当前表已经存在了a=1的数据,对于这种情况,下面两条sql的结果是相等的 当然如果不满足上方条件,则会新增一条数据 1234INSERT INTO t1 (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;UPDATE t1 SET c=c+1 WHERE a=1; 对于InnoDB引擎的表,此处的新增可能会触发自增列,但修改操作不会触发 如果上方的唯一索引再加一个b列,则上方第一条sql和下方sql结果相等 1UPDATE t1 SET c=c+1 WHERE a=1 OR b=2 LIMIT 1; 注意如果此处a=1 or b=2匹配多行,则只会更新一行,所以我们需要避免在有多个唯一索引的表上使用本语法 我们在表内没...
2021-07-24
mysql中的dual
许多人都是由于本身软弱而做出问心有愧的事来的,并非都是蓄意背信弃义。——拉罗什富科 前两天看到项目中有这样一句SQL 1SELECT (SELECT username FROM `user_2018` WHERE id = 1) username,(SELECT `password` FROM `user_2019` WHERE id = 1) `password` FROM DUAL; 最后这里有一个FROM DUAL 我没有在数据库中找到DUAL表,它是一个关键字 但我们就算去掉FROM DUAL,也能成功执行 1SELECT (SELECT username FROM `user_2018` WHERE id = 1) username,(SELECT `password` FROM `user_2019` WHERE id = 1) `password`; 而且很多类似的例子 1234-- 查询当前时间SELECT NOW() FROM DUAL;-- 查询当前数据库版本号SELECT VERSION() FROM DUAL; 我们去掉后面的FROM DUAL,...
2020-07-01
避免循环操作数据库
今天看到公司实习写的代码。。。 1234567for (Long id : ids) { //查询 TbGoods tbGoods = goodsMapper.selectByPrimaryKey(id); tbGoods.setIsDelete("1"); //逻辑删除 //修改 goodsMapper.updateByPrimaryKey(tbGoods); } 这是,循环操作数据库?! 晕。。。希望以后不再看到这样的代码。。。 我给他写了个mapper.xml里的sql,用 where id in()替代,这样只有一条sql语句了 1234567891011<!-- 根据主键查询数据 --> <select id="selectByPrimaryKeys" resultMap="BaseResultMap" parameterType="list&q...
2021-02-10
自增sql
所谓觉悟,就是在漆黑的荒野上开辟出一条理当前进的道路。——乔鲁诺.乔巴纳 我们可以使用 1update user set age=age+1 where id = 1 来让age在原来的基础上+1

阿超
我的名字叫阿超 年龄25岁 家在北京市 职业是软件开发 每天最晚也会在八点前回家 不抽烟 酒浅尝辄止 晚上十二点上床 保证睡足八个小时 睡前写一篇博客 再做二十分钟俯卧撑暖身 然后再睡觉 基本能熟睡到天亮 像婴儿一样不留下任何疲劳和压力 就这样迎来第二天的早晨 健康检查结果也显示我很正常 我想说明我是一个不论何时都追求内心平稳的人 不拘泥于胜负 不纠结于烦恼 不树立使我夜不能寐的敌人 这就是我在这社会的生活态度
Follow Me公告
This is my Blog