【问题标题】:SQL - Matching two rows from multiple columns in one table to 1 row in another table.SQL - 将一个表中多列中的两行与另一表中的 1 行匹配。
【发布时间】:2016-03-16 20:58:16
【问题描述】:

我正在尝试在 postgres 中找出一种方法,将我的一个表中的两列与另一个表中的单列匹配,而不会删除第一个表的列。我可能解释得不是很好,所以这里有一个例子

Table 1:                        Table 2:
col1    col2    col3            2col1   2col2 
1       A       B               A       13.1  
2       A       C               B       18.3
3       B       C               C       21.7
4       B       D               D       11.23

我想找回一个表,其中 col2 和 col3 都可以匹配 2col1 中的内容,并将它们的值替换为 2col2 中的内容。

所以结果是:

Table 1: 
col1   col2   col3
1      13.1   18.3
2      13.1   21.7
3      18.3   21.7
4      18.3   11.23

【问题讨论】:

  • 在 col2 上加入表 2 两次,在 col3 上加入一次;如果您正在寻找 postgresql 解决方案,请删除 mysql 和 sql-server 标签。

标签: mysql sql sql-server postgresql


【解决方案1】:

试试这个:

SELECT t1.col1, t2.2col2 AS col2, t3.2col2 AS col3
FROM table1 AS t1
LEFT JOIN table2 AS t2 ON t1.col2 = t2.2col1
LEFT JOIN table2 AS t3 ON t1.col3 = t2.2col1

【讨论】:

    【解决方案2】:

    这可以帮助你。 LEFT JOIN 是你的朋友

    SELECT
      t1.col1,
      t2.2col2,
      t3.2col2
    FROM table1
    LEFT JOIN table2 AS t2 ON t1.col2 = t2.2col1
    LEFT JOIN table2 AS t3 ON t1.col3 = t3.2col1;
    

    【讨论】:

      猜你喜欢
      • 2020-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-24
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多