如何选择ID1值连续(两个或更多)且城镇匹配的记录
我的表格
TOWN ID1
town1 1
town1 2
town1 4
town2 1
town2 5
town2 8
town3 1
town3 2
town3 3
所需的结果
TOWN ID1
town1 1
town1 2
town3 1
town3 2
town3 3
sql fiddle
如何选择ID1值连续(两个或更多)且城镇匹配的记录
我的表格
TOWN ID1
town1 1
town1 2
town1 4
town2 1
town2 5
town2 8
town3 1
town3 2
town3 3
所需的结果
TOWN ID1
town1 1
town1 2
town3 1
town3 2
town3 3
sql fiddle
EXISTS
子句来检查序列中的下一个值。此代码仅匹配长度>=2的“序列”,这似乎是您从示例中想要的内容。SELECT *
FROM Table1 a
WHERE EXISTS (SELECT *
FROM Table1 b
WHERE b.TOWN=a.TOWN
AND b.ID1 IN (a.ID1 - 1, a.ID1 + 1))
ORDER BY TOWN, ID1
id1
字段的行”,那么简单地执行以下操作:select distinct t1.*
from Table1 t1
join Table1 t2 on t2.town = t1.town and ABS(t1.ID1 - t2.ID1) = 1
order by 1, 2
请参见SQLFiddle了解更多信息。
如果还需要匹配另一列,请在连接条件中添加相应的条件,例如:
select distinct t1.*
from Table1 t1
join Table1 t2
on t2.town = t1.town
and t2.state = t1.state
and ABS(t1.ID1 - t2.ID1) = 1
order by 1, 2
distinct
。;-) - Orbling
town2 1
不也会被列出吗? - Orbling1
。也就是说,连续ID的长度为1。就像town3的第一行一样。 - Bohemian