sql - 消除具有反转值的列的行

标签 sql database postgresql

我在尝试解决这个问题时遇到了很多麻烦。有人可以帮助我吗?

我有一个包含 colA 和 colB 的表,这些是每一行的值:

colA  ColB
2     1
1     2

在此表中进行选择时,我只想检索一行,因为值是倒置的。 如果 2 表示 1,则 1 表示 2,因此它们相等,我不希望返回两行。

有什么方法可以进行 SQL 查询并获得我想要的结果吗? 例如,只有一行 colA = 1,colB = 2。

最佳答案

如果只有2列:

WITH t(colA, colB) AS (
    VALUES (1,2), (2,1)
)
SELECT DISTINCT least(colA, colB), greatest(colA, colB)
  FROM t;

编辑:正如 Daniel 所概述的,虽然这可能会完成工作,但这种方法不利于过滤,因为它会更改原始数据。

关于sql - 消除具有反转值的列的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26682099/

相关文章:

postgresql - 带基数的 Postgres percentile_cont

仅当其他表中的字段满足条件时 MySQL UPDATE

sql - Postgresql触发器计算总分

MySql,多个或不同的数据库? 1 个搜索引擎

mongodb - 对我的案例MongoDB模式设计的看法

postgresql - 一个 INSERT 多个 SELECT

mysql - 将 MIN() 函数与 INNER JOIN 结合使用

mysql - 当键设置为自动增量时指定主键值

php - 在数据库中有唯一的文本

mysql - MySQL 查询的 PostgreSQL UPDATE 等价物