Mysql查询表中最小可用id值的方法

 更新时间:2018年10月24日 09:45:49   作者:dn96  
这篇文章主要介绍了Mysql查询表中最小可用id值的方法,在文中通过sql语句给大家介绍了MySQL中删除id为最小的数据,需要的朋友可以参考下

今天在看实验室的项目时,碰到了一个让我“棘手”的问题,其实也是自己太笨了。先把 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 学习总结 之 初步了解 InnoDB 存储引擎的架构设计

    MySQL 学习总结 之 初步了解 InnoDB 存储引擎的架构设计

    这篇文章主要介绍了MySQL 学习总结 之 初步了解 InnoDB 存储引擎的架构设计,文中给大家提到了mysql存储引擎有哪些,本文给大家介绍的非常详细,需要的朋友可以参考下
    2020-02-02
  • 关于MySQL的索引之最左前缀优化详解

    关于MySQL的索引之最左前缀优化详解

    这篇文章主要介绍了关于MySQL的索引之最左前缀优化详解,多个普通字段组合在一起创建的索引叫做联合索引, 也被称之为组合索引,需要的朋友可以参考下
    2023-05-05
  • MySQL kill不掉线程的原因

    MySQL kill不掉线程的原因

    这篇文章主要介绍了MySQL kill不掉线程的原因,帮助大家更好的理解和学习使用MySQL数据库,感兴趣的朋友可以了解下
    2021-05-05
  • MySQL命令行登入的两种方式

    MySQL命令行登入的两种方式

    MySQL是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的root账号,下面这篇文章主要给大家介绍了关于MySQL命令行登入的两种方式,需要的朋友可以参考下
    2023-04-04
  • mysql最大连接数设置技巧总结

    mysql最大连接数设置技巧总结

    在本篇文章里小编给大家分享了关于mysql最大连接数设置的相关知识点和技巧,需要的朋友们学习下。
    2019-03-03
  • Mysql全局ID生成方法

    Mysql全局ID生成方法

    本文给大家介绍mysql全局id生成方法,涉及到mysql全局id相关知识,感兴趣的朋友一起学习吧
    2015-12-12
  • 一篇文章读懂什么是MySQL索引下推(ICP)

    一篇文章读懂什么是MySQL索引下推(ICP)

    当MySQL使用一个索引来检索表中的行时,可以使用ICP作为一种优化方案,下面这篇文章主要给大家介绍了如何通过一篇文章读懂什么是MySQL索引下推(ICP)的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-09-09
  • 在MySQL中实现基于时间点的数据恢复

    在MySQL中实现基于时间点的数据恢复

    在MySQL中实现基于时间点的数据恢复是一个复杂但可行的过程,主要依赖于MySQL的二进制日志(Binary Log),本文介绍了实现此功能的一般步骤,并有详细的代码供大家参考,需要的朋友可以参考下
    2024-03-03
  • MySQL中year()和month()函数解析与输出示例详解

    MySQL中year()和month()函数解析与输出示例详解

    这篇文章主要介绍了MySQL中year()和month()函数解析与输出,通过本文,我们详细了解了MySQL中year()和month()函数的底层逻辑,它们能够从日期或日期时间类型的数据中提取年份和月份,需要的朋友可以参考下
    2023-07-07
  • mysql数据库常见基本操作实例分析【创建、查看、修改及删除数据库】

    mysql数据库常见基本操作实例分析【创建、查看、修改及删除数据库】

    这篇文章主要介绍了mysql数据库常见基本操作,结合实例形式分析了mysql创建、查看、修改及删除数据库实现方法与操作注意事项,需要的朋友可以参考下
    2020-04-04

最新评论