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

  

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

     //这条语句在id没有1时,不能得到正确的查询结果。   选择最小值(id + 1) oslist c中不存在(从oslist选择id, id=c.id + 1);      

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

  

<强> 1存在语法

  

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

  

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

  

举个例子吧:

  

,如果表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)中值最小的那个,然后返回结果。

     

,结束查询。
  

  

        1//方法   删除从表名在id(选择id(从表选择最小(id) id名c1) t1);//方法2   删除从表名顺序通过id asc限制1;      

  

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

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