比较Postgres数据库中的两列

时间:2018-11-07 14:51:50

标签: sql postgresql comparison

我在一个看似简单的问题上有些困惑。我有一张桌子,例如,

CREATE TABLE cities (
     column_1 TEXT,
     column_2 TEXT);

这些表的内容在哪里

column_1  |  column_2
---------------------
Atlanta   |  Atlanta
Boston    |  Chicago
Chicago   |  Los Angeles
Seattle   |  Tacoma
NULL      |  Seattle

我可以运行哪些查询来查看这两列,并且不管它们的顺序如何,返回两列的匹配位置?

我要寻找的结果是:

column_1  |  column_2
---------------------
Atlanta   |  Atlanta
Chicago   |  Chicago
Seattle   |  Seattle

我尝试过:

SELECT *
FROM cities
WHERE column_1 = column_2;

但这只会返回完全匹配:

column_1  |  column_2
---------------------
Atlanta   |  Atlanta

2 个答案:

答案 0 :(得分:3)

您只需要一个自我加入:

SELECT c1.column_1, c2.column_2
FROM cities c1
JOIN cities c2
    ON c1.column_1 = c2.column_2

答案 1 :(得分:0)

您的查询询问的问题是同一行中的column_1 == column_2在哪里。如果要检索两个列中都存在的城市的所有实例,则需要像这样进行自我联接。

SELECT t1.column_1, t2.column_2
FROM cities t1 join cities t2 on (t1.column_1 = t2.column_2)