我有一些情况,我需要为此检查顺序,我需要以下值的顺序
这是在sql db中显示的实际数据
所以我需要一个以上范围的值,像这样
如果我要在sql中添加新行
在上一行插入后,在sql db中显示的实际数据
那么范围将是
如果我要在sql中添加新行
在上一行插入后,在sql db中显示的实际数据
那么范围将是
谁能帮忙解决这个问题
这是一个典型的差距和孤岛问题。我能够立即识别出查询的需求,但是由于这类问题在Stack Overflow上似乎很少出现,因此我需要一个引用来震撼我的记忆。在Microsoft的TechNet网站上有一篇很棒的文章,深入探讨了差距,孤岛和性能。我建议您阅读它,以便您可以了解以下查询的工作方式。
SELECT t1.gapID as startOfGroup, MIN(t2.gapID) AS endOfGroup
FROM
(
SELECT gapID
FROM gaps tbl1
WHERE NOT EXISTS
(
SELECT * FROM gaps tbl2
WHERE tbl1.gapID = tbl2.gapID + 1
)
) t1
INNER JOIN
(
SELECT gapID
FROM gaps tbl1
WHERE NOT EXISTS
(
SELECT * FROM gaps tbl2
WHERE tbl2.gapID = tbl1.gapID + 1
)
) t2
ON t1.gapID <= t2.gapID
GROUP BY t1.gapID
我为您在MySQL中的问题创建了一个Fiddle,因为SQL Server似乎一直在该站点上被破坏。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句