我有一个餐桌订单,可以保留所有商店的所有订单。
我写了一个查询来检查每个商店的顺序。
看起来像那样。
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序列中的缺口,但不会检测到重复。