使用SQL查询检查序列

THE*_*HEn 2 sql sql-server ms-access sequence

我有一个表订单,可以保存我们所有商店的所有订单.我写了一个查询来检查每个商店的序列顺序.它看起来像那样.

select WebStoreID, min(webordernumber), max(webordernumber), count(webordernumber) 
from orders
where ordertype = 'WEB' 
group by WebStoreID
Run Code Online (Sandbox Code Playgroud)

我可以查看此查询中是否存在所有订单.web ordernumber是1 ... n的数字.

如何在不加入临时/不同表的情况下编写查询以查找丢失的订单?

And*_*mar 6

您可以将表连接到自身以检测没有前一行的行:

select cur.*
from orders cur
left join orders prev 
    on cur.webordernumber = prev.webordernumber + 1
    and cur.webstoreid = prev.webstoreid
where cur.webordernumber <> 1
and prev.webordernumer is null
Run Code Online (Sandbox Code Playgroud)

这将检测1 ... n序列中的间隙,但不会检测到重复.