小编典典

查找缺失值

sql

我有一个表,带有2个重要列DocEntry,WebId

样本数据就像

DocEntry  WebId
1         S001
2         S002
3         S003
4         S005

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

进一步说明:

如果网站ID之间缺少任何数字,则Web
ID应按升序排列,例如S001,S002,S003,S004,S005。我没有任何单独的表格来输入可能的条目,因为这是不切实际的。我必须逐月查找丢失的数字,以每个月的开始和结束值作为边界,然后找到丢失的数字(如果有)。


阅读 245

收藏
2021-04-07

共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)
2021-04-07