【发布时间】:2020-08-06 22:53:33
【问题描述】:
为令人困惑的标题道歉。我有一个从 A 点到 B 点的基本“路线”表,从下图中我们可以看到 ID 1622 和 ID 1634 基本相同,因为一旦访问某个点就不能再次访问它(单向),我想删除其中一个,所以从 B708 到 B733 只有一行。
【问题讨论】:
标签: sql sql-server tsql select sql-server-2012
为令人困惑的标题道歉。我有一个从 A 点到 B 点的基本“路线”表,从下图中我们可以看到 ID 1622 和 ID 1634 基本相同,因为一旦访问某个点就不能再次访问它(单向),我想删除其中一个,所以从 B708 到 B733 只有一行。
【问题讨论】:
标签: sql sql-server tsql select sql-server-2012
你可以使用not exists:
select t.*
from mytable t
where not exists (
select 1
from mytable t1
where t1.source = t.destination and t1.destination = t.source and t1.id < t1.id
)
基本上当存在两个“镜像”行时,这会保留具有最小id 的行,并忽略另一行。
【讨论】: