我有一个餐桌订单,可以保留所有商店的所有订单。
我写了一个查询来检查每个商店的顺序。
看起来像那样。

select WebStoreID, min(webordernumber), max(webordernumber), count(webordernumber)
from orders
where ordertype = 'WEB'
group by WebStoreID


我可以检查此查询是否显示所有订单。网络订单号是1 ... n之间的数字。

如何编写查询以查找缺失的订单而不加入临时/不同表?

最佳答案

您可以将表本身连接起来以检测没有上一行的行:

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


这将检测到1 ... n序列中的缺口,但不会检测到重复。

10-07 23:56