sql - 查询大量记录以找到 1 个字段不同但另外 2 个字段匹配的模式(即使颠倒)

标签 sql sql-server

我有一个包含 3 列的表格,看起来像这样......

tblTowns

TownFrom           TownTo           Distance
Abington           Abington         0
Abington           Acton            4
Abington           Acushnet         30
Abington           Adams            27
Abington           Agawam           57
......          
Acton              Abington         3
Acton              Acton            0

所以表格看起来像这样 - 它按字母顺序获取每个城镇,然后对于 TO 中的城镇获取所有剩余的城镇并显示 2 之间的距离。在为 ABINGTON 记录所有城镇之后 - 然后进入下一个城镇- ACTON(如 ..... 后所示)。问题是创建表格的人犯了一些错误,例如

 Abington          Acton            4

但是当城镇颠倒时......

 Acton             Abington         3

所以值是不同的,但它们应该是相同的。因为我有很多记录,因为我按字母顺序穿过每个城镇并显示所有其他城镇之间的距离,所以我想看看是否有办法查询数据,它会显示距离不同但 FROM 和 TO 的城镇或者 TO 和 FROM 是一样的.......

期望的结果....

    TownFrom           TownTo           Distance
    Abington           Acton            4
    Acton              Abington         3

我不知道我是否在正确的轨道上,但基本上我的查询看起来像这样......

SELECT t1.*
FROM tblTowns AS t1
JOIN tblTownsAS t2 
ON t1.TownFrom = t2.townTo and
t1.Distance<> t2.Distance

编辑:有没有什么方法可以让我按记录排序/分组,这样如果 Abington 和 Acton 以及不正确的记录,它们就会彼此相邻。 (如 DESIRED RESULTS 中所示)在这种情况下,我有几千条记录,除非我搜索每条记录,否则无法查看距离是否正确,因为它们目前在 TOWN FROM 中按字母顺序排列。

最佳答案

除了一个条件 t1.townTo = t2.TownFrom 外,您几乎就在那里。

要获得所需的顺序,即在连续的行中看到一对,请在 order by 中使用 case 表达式,以便结果集按最少的顺序排序townfrom 和 townto 首先,然后由最大的 townfrom,townto。

SELECT t1.*
FROM tblTowns AS t1
JOIN tblTowns AS t2 ON t1.TownFrom = t2.townTo and t1.townTo = t2.TownFrom
WHERE t1.Distance <> t2.Distance
order by case when t1.townfrom < t1.townto then t1.townfrom else t1.townto end
        ,case when t1.townfrom > t1.townto then t1.townfrom else t1.townto end

关于sql - 查询大量记录以找到 1 个字段不同但另外 2 个字段匹配的模式(即使颠倒),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41571249/

相关文章:

sql - 查找所有具有 X 列名称的表

sql - 使用 T-SQL 检索具有许多场景的字符串的一部分

java - 将 java 对象保存到 PostgreSQL 问题

sql - 将 UNION ALL 与 GROUP BY 结合起来

php - 如何进行良好的 SQL 搜索?

sql-server - 使用 T-SQL 从 SQL Server 提取二进制数据

sql-server - View 在 Microsoft SQL Server 中占用多少空间

sql-server - 即使使用 Unicode 源和目标 (SSIS),字符也会显示不正确

php - MySQL 查询产品有多种尺寸和价格

php - 快速生成随机 MySQL 行并多次运行相同的 sql 查询