mysql - 将 2 个或更多结果合并在一起?

标签 mysql sql database

请参阅以下 SQL:

SELECT M.username, count(*) as Total, date(status_date) as Date FROM com_result
   LEFT JOIN members as M on M.member_id = com_result.member_id 
GROUP BY date(status_date), com_result.member_id  Order By status_date DESC

这将显示基于 DATEmember_id 的记录总数

示例结果:

+----------+-------+------------+
| username | Total | DATE       |
+----------+-------+------------+
| bx7      |     3 | 2012-09-10 |
| bx2      |    25 | 2012-09-04 |
| bx2      |   401 | 2012-09-03 |
| bx1      |   703 | 2012-09-02 |
| bx4      |  1075 | 2012-09-02 |
+----------+-------+------------+

它运行良好,现在我想合并/联合到另一个相同的表结构。 第二条SQL:

SELECT M.username, count(*) as Total, date(status_date) as Date FROM com_result_b
   LEFT JOIN members as M on M.member_id = com_result_b.member_id 
GROUP BY date(status_date), com_result_b.member_id  Order By status_date DESC

假设 com_result 的结果是:

| bx2   |    25 | 2012-09-04 |

com_result_b 的结果将是:

 | bx2   |    50 | 2012-09-04 |

所以当它合并/联合时——我希望结果是这样的:

 | bx2   |    75 | 2012-09-04 |

如您所见,Total 的值从两个表的同一日期开始增加。怎么办?

最佳答案

SELECT
  username,
  IF(q1.Total IS NULL,0,q1.Total)+IF(q2.Total IS NULL,0,q2.Total) AS Total,
  q1.Date
FROM (
  SELECT member_id, M.username, count(*) as Total, date(status_date) as Date 
  FROM com_result
  LEFT JOIN members as M on M.member_id = com_result.member_id 
  GROUP BY date(status_date), com_result.member_id  
) AS q1
LEFT JOIN (
  SELECT member_id, M.username, count(*) as Total, date(status_date) as Date 
  FROM com_result_b
  LEFT JOIN members as M on M.member_id = com_result_b.member_id 
  GROUP BY date(status_date), com_result_b.member_id
) AS q2 ON q1.member_id=q2.member_id AND q1.Date=q2.Date
ORDER BY q1.Date DESC

关于mysql - 将 2 个或更多结果合并在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12350438/

相关文章:

mysql - 如何使用替换非唯一键? mysql

sql - 选择更少的 SQL 列是否会使请求更快?

mysql - 社交网络中的 friend 关系

Java EE 命名查询连接

php - 将必需的列添加到数据库表

php - 如何将下一个最大数字插入数据库

sql - 将表拆分为具有重复属性的窗口

database - 1 :1 Relationships. 分割成多于1个表?坏的?

MySQL 存储过程的值中带有连字符

MySQL:使存储过程多个参数可选