我有一个查询,该查询返回的结果描述了一个数字范围,其中一些数据落在同一查询中返回的其他数据的范围内。我如何轻松消除这些?
我有以下数据:
Code Start End
----- ------- -------
abc 1 1
abc 2 2
abc 3 8
abc 4 4
abc 5 5
xyz 1 1
xyz 2 5
xyz 3 3
在这种情况下,代码为“ abc”,有两行:start = 4,end = 4和start = 5,end = 5。但是在它们前面的是一行,其中start = 3,end = 8。因此,这两行均不应在我的结果集中返回。
我可以使用临时表,游标等。但是我想知道查询中是否有一种优雅的方法。
答案 0 :(得分:0)
我会使用WHERE NOT EXISTS()子句来做到这一点。
EXISTS()函数将检查Start
小于或等于我的End
且End
大于或等于我的{{ 1}}。
样本数据中没有确切的重复行,但是如果实际数据中可能存在这些重复行,则您还必须考虑对这些行要做什么。