我有一张表,如下所示:

city1 city2 dist
New York Berlin 7900
Berlin New York 7900
Oregon Ohio 5700
Montreal Rio 5700
Ohio Oregon 5700
Rio Montreal 5700
Moscow Tokyo 4200
Tokyo Moscow 4200

第一行和第二行都是一样的,唯一的区别是第一行柏林是city2,第二行柏林是city1. 我只想展示一次这样的行列...

怎么做呢?

推荐答案

你可以自己左加入,看看是否有任何匹配

根据最后的OR条件,您可以 Select 在结果集中显示哪些引用

SELECT t1.*
FROM t t1
LEFT JOIN t t2 ON t1.city1 = t2.city2 and t2.city2 = t1.city1 AND t1.dist = t2.dist
WHERE t2.city1 IS NULL 
  OR t1.city1 > t1.city2
city1 city2 dist
Conce Santiago 500
New York Berlin 7900
Oregon Ohio 5700
Rio Montreal 5700
Talca Linares 80
Tokyo Moscow 4200
SELECT 6
SELECT t1.*
FROM t t1
LEFT JOIN t t2 ON t1.city1 = t2.city2 and t2.city2 = t1.city1 AND t1.dist = t2.dist
WHERE t2.city1 IS NULL 
  OR t2.city1 > t2.city2
city1 city2 dist
Berlin New York 7900
Conce Santiago 500
Montreal Rio 5700
Moscow Tokyo 4200
Ohio Oregon 5700
Talca Linares 80
SELECT 6

fiddle

Sql相关问答推荐

LAG函数通过丢弃空值返回前一行

SQL—如何根据2列填写缺失的值

用于匹配红旗和绿旗的SQL查询

SQL Oracle条件分组依据

将主表与历史表连接以获取主表的当前汇率以及历史表中的上一个和最后一个汇率

分组多输出访问查询问题

PostgreSQL中的合并命令是原子的,还是需要一些类似于SQL Server版本的内容?

SQL:如何将相应位置的两个数组中的元素组合在一起

如何在SQL Server中拆分包含字符和数字的列?

用于过滤嵌套对象或数组中的JSON数据的WHERE条件

将二维数组的第一个和第二个元素取消嵌套到两个一维数组中

根据时间值提取记录

Oracle SQL:通过将日期与另一个表行进行比较来 Select 值

删除重复记录但保留最新的SQL查询

Clob 问题 - 将 clob 列拆分为多行

在 postgresql 中,我可以将其组合成一个查询吗?

在 MS Access 中连接相关记录

在 SQL 的每行选项中 Select 最大值

奇怪的甲骨文行为

在时态表和非时态表之间使用 EXCEPT 的 SQL 子查询给出表达式错误数