【问题标题】:MySQL join on tables with duplicate index valuesMySQL连接具有重复索引值的表
【发布时间】:2018-05-07 09:50:47
【问题描述】:

我们有两个 MySQL 表,当使用标准连接进行连接时会产生重复的结果。原因是用于连接它们的公共字段不是唯一的。我们尝试了多种变体,但无法获得正确的结果。希望有人能指出我们正确的方向。

Table A / ws_511_1

Table B / ws_583_1

正确的输出应如下所示:

Correct output

使我们最接近正确输出的查询(此处并未包含所有列):

选择 a.col_3 AS 数据,SUM(a.col_4) AS `2016 年 10 月`,SUM(a.col_5) AS `2016 年 11 月`,SUM(b.col_4) AS `2017 年 2 月`,SUM(b. col_5) AS `March 2017` FROM ws_511_1 a LEFT JOIN (SELECT * FROM ws_583_1 b GROUP BY col_3) b ON b.col_3 = a.col_3 WHERE a.id!='1' GROUP BY a.col_3

这个查询的输出是:

Incorrect output

您会注意到 10 月和 11 月是正确的,但连接列的结果不正确。

【问题讨论】:

    标签: mysql join


    【解决方案1】:

    您可以对左表使用按结果分组

      SELECT  a.col_3 AS Data
        , SUM(a.col_4) AS `October 2016`
        , SUM(a.col_5) AS `November 2016`
        , b.`February 2017`
        , b.`March 2017` 
      FROM ws_511_1 a 
      LEFT JOIN (
            SELECT col_3
            , SUM(b.col_4) AS `February 2017`
            , SUM(b.col_5) AS `March 2017`  
            FROM ws_583_1 b 
            GROUP BY col_3
      ) b ON b.col_3 = a.col_3 
      WHERE a.id!='1' 
      GROUP BY a.col_3 , , b.`February 2017`, b.`March 2017` 
    

    【讨论】:

    • 非常感谢。完美运行。欠你一杯啤酒!!
    • @claytont 谢谢..我第一次来你的地区..我想
    猜你喜欢
    • 2021-09-30
    • 2019-07-14
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 2019-06-04
    • 2018-04-26
    • 2021-05-14
    相关资源
    最近更新 更多