我有一个表,带有2个重要列DocEntry,WebId
样本数据就像
DocEntry WebId 1 S001 2 S002 3 S003 4 S005
现在我们可以在这里注意到,在WebId列中缺少S004。我们如何通过查询找到这些缺失的数字。
进一步说明:
如果网站ID之间缺少任何数字,则Web ID应按升序排列,例如S001,S002,S003,S004,S005。我没有任何单独的表格来输入可能的条目,因为这是不切实际的。我必须逐月查找丢失的数字,以每个月的开始和结束值作为边界,然后找到丢失的数字(如果有)。
一个非常简单的方法:)
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)