今天在看实验室的项目时,碰到了一个让我“棘手”的问题,其实也是自己太笨了。先把 sql 语句扔出来

// 这条语句在id没有1时,不能得到正确的查询结果。

select min(id+1) from oslist c where not exists (select id from oslist where id = c.id+1);

刚开始看到这条查询语句,完全是一脸懵X的状态,可能也是好久没碰 sql 了。

1 exists语法

sql 语法中, exists 用来筛选结果。实际执行过程中, exists 语句是对外表作loop循环,每次loop循环再对内表进行查询操作。把外表的记录逐条代入到子查询,如果子查询结果集为空,说明不存在,反之,则存在。

此处要注意的是,这里把外表的记录代入到子查询中,只是看得到的查询结果是否为 空 ,而不是做实质性的值比较。

举个例子吧:

如果表oslist中的id为1,2,3,4,5,6,7,8,9,10,11,14,15。此处采用文章最开始的sql语句,使用自连接。

那么在查询过程如下:

取id为1,看oslist中存在id = 2的否?,存在,则不纳入结果集;

取id为2,看oslist中存在id = 3的否?,存在,则不纳入结果集;

取id为3,看oslist中存在id = 4的否?,存在,则不纳入结果集;

取id为4,看oslist中存在id = 5的否?,存在,则不纳入结果集;

取id为5,看oslist中存在id = 6的否?,存在,则不纳入结果集;

取id为6,看oslist中存在id = 7的否?,存在,则不纳入结果集;

取id为7,看oslist中存在id = 8的否?,存在,则不纳入结果集;

取id为8,看oslist中存在id = 9的否?,存在,则不纳入结果集;

取id为9,看oslist中存在id = 10的否?,存在,则不纳入结果集;

取id为10,看oslist中存在id = 11的否?,存在,则不纳入结果集;

取id为11,看oslist中存在id = 12的否?,不存在,则纳入结果集;

取id为14,看oslist中存在id = 15的否?,存在,则不纳入结果集;

取id为15,看oslist中存在id = 16的否?,不存在,则纳入结果集;

取(11+1)与(15+1)中值最小的那个,然后返回结果。

结束查询。

ps:MySQL中删除id为最小的数据

//方法1

delete from 表名 where id in (select id from (select min(id) id from 表名 c1) t1);

//方法2

delete from 表名 order by id asc limit 1;

总结

以上所述是小编给大家介绍的Mysql查询表中最小可用id值的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

您可能感兴趣的文章:Mysql获取id最大值、表的记录总数等相关问题的方法汇总

PHP获取MySql新增记录ID值的3种方法

mysql自增ID起始值修改方法

Java获取最后插入MySQL记录的自增ID值的3种方法

使用MySQL的LAST_INSERT_ID来确定各分表的唯一ID值

mysql查询最小的id_Mysql查询表中最小可用id值的方法相关推荐

  1. MySQL 查询重复数据,删除重复数据保留id最小的一条作为唯一数据

    MySQL 查询重复数据,删除重复数据保留id最小的一条作为唯一数据 目录导航: 开发背景: 实战: 表结构如下图所示: 操作: 总结: 回到顶部 开发背景: 最近在做一个批量数据导入到MySQL数据 ...

  2. mysql获取下一条自增的id_mysql获取一个表中的下一个自增(id)值的方法

    mysql获取一个表中的下一个自增(id)值的方法 MySQL: Get next AUTO_INCREMENT value from/for table Note to self: To get t ...

  3. php mysql获取新添加记录的id值_PHP获取MySql新增记录ID值的方法

    今天发现用mysql_insert_id()获取到的新增记录的id不正确, 虽然发现源代码的事务写的有问题,但是最根本的原因是,我插入数据的id类型是bigint型 获取MySql新增记录ID值的方法 ...

  4. Android中R文件ID值

    Android中R文件ID值 文章目录 Android中R文件ID值 前言 知识回顾 在代码中访问资源 语法 R文件 Lib库的R文件 AAR中的R文件 依赖库R文件的生成 R文件的数量 后续疑问 官 ...

  5. 肘方法确定聚类数k_一种自动识别肘部法则中最优K值的方法与流程

    本发明涉及一种自动识别肘部法则中最优K值的方法,特别涉及一种结合利用机器学习中无监督学习中常用的K-Means聚类算法.肘部法则以及通过0-10的规则化对平均畸变程度进行规则化.将0-10规则化后的平 ...

  6. 织梦cms php中调用当前频道,DEDE织梦CMS模板在runphp=yes的标签中调用其他field值的方法...

    这篇文章主要为大家详细介绍了DEDE织梦CMS模板在runphp=yes的标签中调用其他field值的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴. Ded ...

  7. mysql查询数学成绩信息_【MySQL】:利用DQL查询表中的数据

    DQL(Data Query Language):数据查询语言,用以查询数据库中表的记录(数据). CREATE TABLE exam( id INT PRIMARY KEY AUTO_INCREME ...

  8. (笔记)Mysql命令select from:查询表中的数据(记录)

    select from命令用来查询表中的数据. 1) 查询所有行 命令格式: select <字段1, 字段2, ...> from < 表名 > where < 表达式 ...

  9. php设置页面最小高度,HTML_CSS布局中最小高度的妙用,最小高度可以设定一个BOX的最 - phpStudy...

    CSS布局中最小高度的妙用 最小高度可以设定一个BOX的最小高度,当其内容较少时时,也能保持BOX的高度为一定,超出就自动向下延伸,但到目前为止,只有Opera 和 Mozilla 支持,IE7开始也 ...

最新文章

  1. http 里面的post和get区别
  2. SZOJ 142 钦定
  3. 二周第三次课(3月28日)
  4. HBase get查询命令及VERSIONS版本
  5. JavaScript循环定时器的设置和取消
  6. linux ps mp,Linux中的命令ps(ps -aux)
  7. 三数之和—leetcode15
  8. Eigen(7)Map类
  9. a pycharm 标记多个_轻松学透Markdown的终极教程 #3:Markdown标准标记语法(全)
  10. 关于文件上传,我要向struts提点意见
  11. 【BZOJ3144】[Hnoi2013]切糕 最小割
  12. 计算机阵列除法器原理,并行除法器 ,并行除法器结构原理是什么?
  13. Centos8装Wine笔记
  14. FPGA:vivado2018.1编程界面字体大小与颜色修改
  15. Android一步步实现无痕埋点(3)-------虎躯一震
  16. 仙人掌相关问题的处理方法(未完待续)
  17. 2021黑金牛气冲天新年快乐通用PPT模板
  18. 三个理由告诉你 为什么社保不能断缴
  19. k8s常见故障排查一点通
  20. 猜猜我是谁(猜数游戏)

热门文章

  1. c语言中字母的定义,c语言字符串定义与初始化 - 且听风吟
  2. 计算机英语论文摘要,求英语高手翻译论文摘要,非常感谢!
  3. Python operator.not_()函数与示例
  4. mysql tomcat列表增删改查_Tomcat-Database
  5. php单下划线的函数,基于PHP函数的操作方法
  6. java fastjson 泛型_解决fastjson泛型转换报错的解决方法
  7. linux安装python2环境_Python基础手册 2 —— Python 环境搭建(Linux)
  8. python采用面向对象编程模式吗_如何理解 Python 中的面向对象编程?
  9. matlab启动不了jvm,MATLAB ::在-nojvm启动选项下不再支持此功能
  10. java解析html jsoup_2020-06-02 jsoup java解析html