【问题标题】:How to avoid duplicate records in left join如何避免左连接中的重复记录
【发布时间】:2020-04-21 08:45:07
【问题描述】:

我有两张桌子 t1 和 t2。在 t1 中,有 1641787 条记录。在 t2 中,有 33176007 条记录。我想从 t2 中取出两列,并使用左连接保留 t1 的所有内容。当我使用 t1 到 t2 的左连接时,我得到的记录比 t1 多。我想在加入后获得与 t1 相似数量的记录。请给我一个建议。表之间存在多对多关系。这是我的代码:

SELECT t1.*, t2.City
FROM t1 LEFT JOIN t2 ON t1.ID = t2.ID;

【问题讨论】:

标签: sql google-bigquery


【解决方案1】:

你需要聚合t2之前加入:

SELECT t1.*, t2.City
FROM t1 LEFT JOIN
     (SELECT t2.ID, ANY_VALUE(t2.City) as City
      FROM t2
      GROUP BY t2.ID)
     ) t2
     ON t1.ID = t2.ID;

【讨论】:

  • 是否有理由对正确答案投反对票?
【解决方案2】:

"选择目的地 ..." 添加“排序依据”

像这样:

SELECT DESTINCT t1.*, t2.City
FROM t1 LEFT JOIN t2 ON t1.ID = t2.ID
ORDER BY t1.name ASC;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多