0

我正在尝试执行一个 MYSQL/SQL 查询,它将两个表合并为一个,以便只有匹配“日期”和“id”的行被加在一起(“计数”相加)。table1 中没有匹配的 'date' 和 'id' 对在 table2 中的任何行都会按原样添加。

我正在组合的表是 TABLE1 和 TABLE2,导致 TABLE_COMBINED。执行这种表耦合的最佳方法是什么?

下面的表格格式和所需结果的示例:

表格1

date        |    count  |   id  |

2002-04-15 01:38:00 | 100 | 5 |

2002-04-15 01:38:00 | 10 | 6 |

2002-04-15 01:38:00 | 20 | 7 |

...

表2

date        |    count  |   id  |

2002-04-15 01:38:00 | 29 | 5 |

2002-04-15 01:38:00 | 20 | 6 |

2003-04-15 01:38:00 | 10 | 8 |

...

结合表 1 和表 2。如果 'date' 和 'id' 匹配,则对两个表的 'count' 求和。

TABLE_COMBINED

date        |    count  |   id  |

2002-04-15 01:38:00 | 129 | 5 |

2002-04-15 01:38:00 | 30 | 6 |

2002-04-15 01:38:00 | 20 | 7 |

2003-04-15 01:38:00 | 10 | 8 |

4

1 回答 1

2

你可以很容易地使用UNION ALL来获取所有行,GROUP就像你只从一个表中选择一样;

SELECT `date`, SUM(`count`) `count`, `id`
FROM (
  SELECT * FROM Table1
  UNION ALL
  SELECT * FROM Table2
) a
GROUP BY `date`, `id`

一个用于测试的 SQLfiddle

于 2013-05-26T17:59:14.677 回答