sql - 删除重复的源到目的地(例如,对于 2 个不同的条目(行),德里到孟买和孟买到德里,输出应该是一个)

标签 sql sql-server database

我在sql server数据库中有一个表。

Source     Destination     Fare
-------------------------------
Delhi      Mumbai           100
Mumbai     Delhi            100
London     New York         500

我必须编写一个生成以下结果的 SQL 查询。

Source     Destination     Fare
-------------------------------
Delhi      Mumbai           100
London     New York         500

如果交换源和目标并且它与任何前一行匹配,则将其删除。

最佳答案

一种方法使用union all并且不存在:

select source, destination, fare
from t
where source < destination
union all
select source, destination, fare
from t
where source > destination and
      not exists (select 1
                  from t t2
                  where t2.source = t.destination and t2.destination = t.source
                 );

关于sql - 删除重复的源到目的地(例如,对于 2 个不同的条目(行),德里到孟买和孟买到德里,输出应该是一个),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54533518/

相关文章:

mysql - 图片和标签 - 数据库设计问题

c# - Linq-to-SQL 检索子表抛出 InvalidCastException

c# - ASP.NET MVC 中的单个 SQL

mysql - 为什么 MySQL 数据库中的电话号码被截断

sql - 如何从 T-SQL 中的字符串中删除扩展 ASCII 字符?

sql-server - SQL Server 到 Postgresql 迁移/转换

c# - 从数据库中表示树结构

mysql - 如何在 MySQL 中找到所有的数据库触发器?

MySQL 查询在 v4.1.22 上运行良好但在 v5.x 上运行不正常

用于更改所有存储过程中的所有表引用的 SQL 脚本