我想识别Name列中的值相同且start / end列中的值位于另一行的Start和End值范围内的行... 例如。对于ID为4&的行1是重复的,因为它们在Name列中具有相同的值,并且ID 4的起始列26中的值位于start& ID 1的结束值(24-56)
ID名称开始结束
1 Adam 24 56
2 Max 1 5
3 Neil 6 4
4 Adam 26 30
答案 0 :(得分:0)
您可以使用EXISTS
:
select *
from yourtable y
where exists (
select 1
from yourtable y2
where y.id <> y2.id
and y.name = y2.name
and (y2.startfield between y.startfield and y.endfield
or
y.startfield between y2.startfield and y2.endfield))
我不能完全确定你的问题是否也必须包括最终范围。如果是这样,您需要将其添加到where
条件:
select *
from yourtable y
where exists (
select 1
from yourtable y2
where y.id <> y2.id
and y.name = y2.name
and ((y2.startfield > y.startfield and y2.endfield < y.endfield)
or
(y.startfield > y2.startfield and y.endfield < y2.endfield)))