如何消除同一查询中其他数据范围内的数据?

时间:2019-02-12 17:53:21

标签: sql-server range

我有一个查询,该查询返回的结果描述了一个数字范围,其中一些数据落在同一查询中返回的其他数据的范围内。我如何轻松消除这些?

我有以下数据:

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。因此,这两行均不应在我的结果集中返回。

我可以使用临时表,游标等。但是我想知道查询中是否有一种优雅的方法。

1 个答案:

答案 0 :(得分:0)

我会使用WHERE NOT EXISTS()子句来做到这一点。

EXISTS()函数将检查Start小于或等于我的EndEnd大于或等于我的{{ 1}}。

样本数据中没有确切的重复行,但是如果实际数据中可能存在这些重复行,则您还必须考虑对这些行要做什么。