当前位置: 首页 > ds >正文

【MySQL】实战时遇到的几个 tips

一、添加触发器

需要新增一个递增字段 user_id,但因为 record 表中原先有一个主键字段 id,为 auto_increment,所以不能再添加一个递增字段,因此这里需要用到触发器。

这里是根据 user 来做的判断,同一个 user 的 user_id 独立自增。

BEGIN
IF NEW.user_id = 0 THENSET NEW.user_id = (SELECT IFNULL(MAX(user_id), 0) + 1FROM recordWHERE user = NEW.user);END IF;
END

二、重新设置 auto_increment 值

在修改表的 auto_increment 值之前需要先查看当前值是多少:

select auto_increment from information_schema.tables where table_schema='数据库名' and table_name='表名';

table_schema 参数指定数据库名,table_name 参数指定表名。

为了使得新添加的记录自增 ID 再次继续从 num 开始计数,执行如下语句:

alter table 表名 AUTO_INCREMENT=num;

三、LIKE 操作符通配符

如果 id 是整型(如 INT 或 BIGINT),直接使用 LIKE 会导致隐式类型转换错误(因为 LIKE 只能用于字符串类型)。 

正确写法(显式类型转换)​

需要先将 id 转换为字符串类型,再使用 LIKE:

SELECT * FROM table WHERE CAST(id AS STRING) LIKE '100%';  -- 适用于 Hive、Spark、PostgreSQL、MySQL 等
http://www.xdnf.cn/news/8532.html

相关文章:

  • AAAI-2016《Approximate K-Means++ in Sublinear Time》
  • python实战:Python脚本后台运行的方法
  • docker部署并测试翻译模型-CSANMT连续语义增强机器翻译
  • 《Android 应用开发基础教程》——第十五章:Android 动画机制详解(属性动画、帧动画、过渡动画)
  • 深入理解SummaryWriter类与TensorBoard的基本使用
  • SurfaceFlinger及Android应用RenderThread角度观察Jank丢帧卡顿
  • 【漫话机器学习系列】274.基尼指数(Gini Index)
  • 在Vue3 + Vite 项目安装使用 Tailwind CSS 4.0报错
  • 小白刷题之链表中的 “龟兔赛跑“:快慢指针算法详解
  • python打卡day34@浙大疏锦行
  • C++线程池的使用
  • 力扣 128.最长连续序列
  • 缓存和数据库一致性问题
  • 对于geoserver发布数据后的开发应用
  • MYSQL之复合查询
  • 基于51单片机和8X8点阵屏、独立按键的飞行躲闪类小游戏
  • wordpress上传图片时出现服务器无法处理图片
  • Vue3 + Element Plus表格筛选样式设置
  • ES6 哈希数据结构
  • 【maxcompute】阿里maxcompute Python开发个人经验汇总
  • 为何在VMware中清理CentOS虚拟机后,本地磁盘空间未减少的问题解决
  • 工业RTOS生态重构:从PLC到“端 - 边 - 云”协同调度
  • PCIe Gen3 phy(编解码,token相关)
  • 谢飞机的Java面试奇遇:AIO、BIO、NIO与Netty深度解析
  • openEuler 22.03安装zabbix7 LTS(容器化部署)
  • ajax中get和post的区别,datatype返回的数据类型有哪些?
  • STM32 SPI通信(硬件)
  • 2025 最新教程:注册并切换到美区 Apple ID
  • 3dczml时间动态图型场景
  • 怎么判断一个Android APP使用了taro 这个跨端框架