mysql查找不存在的id_MySQL
第一种方法:
select bewin_id,a from
(select bewin_id,1 as a from (select bewin_id from c_userinfo_his order by bewin_id asc) t where not exists (select 1 from c_userinfo_his where bewin_id=t.bewin_id-1)
union
select bewin_id,2 as a from (select bewin_id from c_userinfo_his order by bewin_id asc) t where not exists (select 1 from c_userinfo_his where bewin_id=t.bewin_id+1)
) t order by bewin_id
解释下select bewin_id,1 as a from (select bewin_id from c_userinfo_his order by bewin_id asc) t where not exists (select 1 from c_userinfo_his where bewin_id=t.bewin_id-1)
这个sql查到的id都是缺少这个id的前一个id(有点拗口,举例就是查到的id为7则6是不存在这张表里的)
select bewin_id,2 as a from (select bewin_id from c_userinfo_his order by bewin_id asc) t where not exists (select 1 from c_userinfo_his where bewin_id=t.bewin_id+1)
这个sql查到的id都是缺少这个id的后一个id(举例就是查到的id为7则8是不存在这张表里的)
所以看结果
就可以直接知道456和1213等等都是不存在的,上面的有个缺点就是要自己去数
第二种方法
创建一张表(c_userinfo_his_test)只有id和另一个字段test,并且id是连续的,最大的id为select max(bewin_id) from c_userinfo_his,这样得到一张完整的id(insert into c_userinfo_his_test(test) values ('1')使bewin_id等于max(bewin_id)),
然后就是执行select bewin_id from c_userinfo_his_tset where bewin_id not in (select bewin_id from c_userinfo_his)
这个语句就可以得到想要的结果了(这里test写错了)
如图
和前面是一样的。
推荐阅读
-
mysql 存在该记录则更新,不存在则插入记录的sql
-
mysql 记录不存在时插入 记录存在则更新的实现方法
-
C#中实现查找mysql的安装路径
-
Windows下MySQL5.6查找my.ini配置文件的方法
-
MySQL 查找价格最高的图书经销商的几种SQL语句
-
C#中实现查找mysql的安装路径
-
mysql 记录不存在时插入 记录存在则更新的实现方法
-
Windows下MySQL5.6查找my.ini配置文件的方法
-
MySQL根据某一个或者多个字段查找重复数据的sql语句
-
SQL Server 2008 R2——查找最小nIndex,nIndex存在而nIndex+1不存在 求最小连续数组中的最大值