如何在TOWN匹配的位置(两个或多个)中选择ID1值的记录
我的桌子
TOWN ID1
town1 1
town1 2
town1 4
town2 1
town2 5
town2 8
town3 1
town3 2
town3 3
Run Code Online (Sandbox Code Playgroud)
要求的结果
TOWN ID1
town1 1
town1 2
town3 1
town3 2
town3 3
Run Code Online (Sandbox Code Playgroud)
sql小提琴
您可以使用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
Run Code Online (Sandbox Code Playgroud)
如果您的问题是“给我所有具有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
Run Code Online (Sandbox Code Playgroud)
请参阅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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1514 次 |
| 最近记录: |