我有一个表,有两个重要的列DocEntry,WebId
样本数据就像
DocEntry WebId
1 S001
2 S002
3 S003
4 S005
Run Code Online (Sandbox Code Playgroud)
现在我们可以注意到,在WebId列中,缺少S004.我们如何通过查询找到这样的缺失数字.
进一步说明:
如果缺少中间的任何数字,那么web id应该按递增的顺序,如S001,S002,S003,S004,S005,而不是丢失的数字.我没有任何单独的表可用条目,因为这是不切实际的.我要逐月找到丢失的数字,将每个月的起始值和结束值作为边界,而不是找到丢失的数字(如果有的话).
小智 5
一个非常简单的方法:)
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)
Run Code Online (Sandbox Code Playgroud)
祝你好运,莫里斯
| 归档时间: |
|
| 查看次数: |
4517 次 |
| 最近记录: |