当前位置:  开发笔记 > 后端 > 正文

找到缺失的值

如何解决《找到缺失的值》经验,为你挑选了1个好方法。

我有一个表,有两个重要的列DocEntry,WebId

样本数据就像

DocEntry  WebId
1         S001
2         S002
3         S003
4         S005

现在我们可以注意到,在WebId列中,缺少S004.我们如何通过查询找到这样的缺失数字.

进一步说明:

如果缺少中间的任何数字,那么web id应该按递增的顺序,如S001,S002,S003,S004,S005,而不是丢失的数字.我没有任何单独的表可用条目,因为这是不切实际的.我要逐月找到丢失的数字,将每个月的起始值和结束值作为边界,而不是找到丢失的数字(如果有的话).



1> 小智..:

一个非常简单的方法:)

mysql> select * from test;
+----------+-------+
| DocEntry | WebId |
+----------+-------+
| 1        | S001  |
| 2        | S002  |
| 3        | S003  |
| 4        | S005  |
| 5        | S006  |
| 6        | S007  |
| 7        | S008  |
| 8        | S010  |
+----------+-------+
8 rows in set (0,00 sec)

mysql> SELECT right(t1.webid,3) +1 as missing_WebId FROM test t1 left join test t2 on right(t1.webid,3)+1 = right(t2.webid,3) where t2.webid is null;
+---------------+
| missing_WebId |
+---------------+
| 4             |
| 9             |
| 11            |
+---------------+
3 rows in set (0,01 sec)

祝你好运,莫里斯

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有