【问题标题】:Full Outer Join / COALESCE全外连接 / COALESCE
【发布时间】:2017-09-14 16:01:26
【问题描述】:

我想得到一些专家的建议

我有 2 个表 Table1 和 Table2

表一

ID  DATE         SALEPRICE

1   05/12/17     $10
6   04/12/17     $11
3   03/12/17     $12
4   02/12/17     $13

表2

ID  DATE         REGULARPRICE

1   07/12/17     $20
2   08/12/17     $21
3   09/12/17     $22
4   10/12/17     $23

结果表

ID  SALEDATE         SALEPRICE REGULARPRICE   REGULARPRICEDATE

1   05/12/17          $10       $20           07/12/17
6   04/12/17          $11         
3   03/12/17          $12       $22           09/12/17
4   02/12/17          $13       $23           10/12/17
2                               $21           08/12/17

我需要两个表中的条目..如果两个表中的 id 都匹配,那么我想在一行中获取记录..

我想用 Union 但结果不正确 - 下面是我的 union 结果

1   05/12/17          $10       null          null
1   null              null      $20           07/12/17
6   04/12/17          $11       null          null  
3   null              null      $22           09/12/17
3   03/12/17          $12       null          null  
4   02/12/17          $13       null              null
4   null              null      $23           10/12/17

我是否必须使用完全外连接和 COALESCE 才能获得所需的结果

提前致谢

【问题讨论】:

  • 是的,完全外部联接将是您的解决方案。
  • 取决于 RDBMS。 mySQL 不支持完整的外部,但两个外部和联合都可以做到。但是不确定为什么需要合并。或者你可以继续你所拥有的,只需按 ID 最大化每个列和组(不太优雅的 imo)
  • 哪个 SQL?如果有人给你解决错误的 SQL 是没有用的。
  • 嗨 - 它是一个 HANA 数据库

标签: sql join


【解决方案1】:

您可以同时使用两者。完全外连接返回所有记录而不考虑匹配,然后 COALESCE 将相同的列合并为一个。仅当两列中的数据完全相同时,使用 COALESCE 才有用。那就是如果你想合并列。如果没有,那么就使用全外连接。

【讨论】:

    猜你喜欢
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 2013-03-11
    相关资源
    最近更新 更多