mysql - 如何按日期 "merge"两个结果集

标签 mysql sql join

我正在尝试合并下面两个 SQL 查询的结果:

上传表格

SELECT DATE(`timestamp`), SUM(uploaded) AS total_upload FROM uploads;

date          total_download

2014-09-11    1000
2014-09-12    1000
2014-09-13    1000

下载表

SELECT DATE(`timestamp`), SUM(downloaded) AS total_download FROM downloads;

date          total_upload

2014-09-09    1000
2014-09-10    1000
2014-09-11    1000

我想得到以下结果,如果没有下载则显示空白结果,如果没有上传则显示空白结果:

date          total_download   total_upload

2014-09-09                     1000
2014-09-10                     1000
2014-09-11    1000             1000
2014-09-12    1000
2014-09-13    1000

我以为我可以在 download_date = upload_date 上离开加入表格,但显然没有上传的日子将会丢失。我将如何正确合并这些结果?

最佳答案

FULL JOINCOALESCE()结合使用。

SELECT COALESCE(u.date, d.date) AS date,
    u.total_upload AS total_upload,
    d.total_download as total_download
FROM (SELECT DATE(`timestamp`) AS date, SUM(uploaded) AS total_upload FROM uploads) as u
FULL OUTER JOIN (SELECT DATE(`timestamp`) AS date, SUM(downloaded) AS total_download FROM downloads) as d
    ON u.date = d.date

语法可能有问题;我对 MySQL 很生疏。

编辑:如果您想要完全空白,则需要替换:COALESCE(CAST(u.total_upload AS varchar),'') AS total_upload 或类似内容。但请注意,这实际上会将您的输出数据类型更改为字符。

关于mysql - 如何按日期 "merge"两个结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26102638/

相关文章:

php - 对子集合的操作

mysql - 如何从mysql中的连接查询中删除重复行

sql - DATE_DIFF 但只计算工作日

sql - 有 INNER JOIN 限制吗?

javascript - 将字符串转换为分隔对象键

php - 根据 php session 属性更改 HTML 菜单栏?

c# - DataTable 列数据到组合框错误

php - 计算日期时正确使用 PHP 和 MySQLi 查询

php - 如何在mysql中为(select * from)设置变量

mysql - [MySQL] : select UNIQUE w/join