我有一个表,有两个重要的列DocEntry,WebId
样本数据就像
DocEntry WebId 1 S001 2 S002 3 S003 4 S005
现在我们可以注意到,在WebId列中,缺少S004.我们如何通过查询找到这样的缺失数字.
进一步说明:
如果缺少中间的任何数字,那么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)
祝你好运,莫里斯