mysql - 联合选择列不匹配

标签 mysql select union

这是我的查询:

SELECT
    FROM_UNIXTIME( date_added,  '%m-%d-%Y' ) AS formatted_date,
    SUM( tb =1 ) AS sum_users,
    SUM( tb =2 ) AS sum_links,
    SUM( tb =3 ) AS sum_ads,
    SUM( tb =4 ) AS sum_actions
FROM (
    SELECT date_added, 1 AS tb
        FROM users_list WHERE 1=1
    UNION ALL 
    SELECT date_added, 2
        FROM users_links WHERE 1=1
    UNION ALL 
    SELECT date_served, 3
        FROM ads_served WHERE 1=1
    UNION ALL 
    SELECT date_served, 4
        FROM actions WHERE 1=1
) AS t
GROUP BY formatted_date
ORDER BY formatted_date DESC

这是我的表格数据:

用户列表

id    date_added
1     1234567890
2     1334567890
3     1434567890

用户链接

id    date_added
1     1244567890
2     1354567890
3     1464567890

广告转换

id    date_served    revenue
1     1234567891     0.01
2     1334567892     0.02
3     1434567893     0.02

行动

id    date_served
1     1234561890
2     1334562890
3     1434563890

我尝试将 ads_served 表中 formatted_date 的收入求和,作为输出查询的第六列。我不知道从哪里开始。如果我将总和(收入)添加到联合选择中,我会收到“列不匹配”错误。

最佳答案

revenue 列属于 ads_served,但您从不存在 revenue 的子查询中进行选择。将其添加到子查询中:

SELECT
    FROM_UNIXTIME( date_added,  '%m-%d-%Y' ) AS formatted_date,
    SUM( tb =1 ) AS sum_users,
    SUM( tb =2 ) AS sum_links,
    SUM( tb =3 ) AS sum_ads,
    SUM( tb =4 ) AS sum_actions,
    SUM( revenue ) As sum_revenue
FROM (
    SELECT date_added, 1 AS tb, 0 As revenue
        FROM users_list WHERE 1=1
    UNION ALL 
    SELECT date_added, 2, 0
        FROM users_links WHERE 1=1
    UNION ALL 
    SELECT date_served, 3, revenue
        FROM ads_served WHERE 1=1
    UNION ALL 
    SELECT date_served, 4, 0
        FROM actions WHERE 1=1
) AS t
GROUP BY formatted_date
ORDER BY formatted_date DESC

关于mysql - 联合选择列不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5863677/

相关文章:

php - MySQL算术平均查询

Jquery 添加一个选项来选择

c# - 需要合并两个数据集合的帮助

c# - 使用联合调用 PInvoke 结构时,使用 StructLayout( LayoutKind.Explicit ) 我做错了什么?

SQL查询,连接两个表

Mysql 和 Nitrious IO

php - mysql搜索获取特定行

c# - 制作 ASP.NET-web 应用程序时获取 CS0246,但添加了 MySql.Data

angular - 为什么我应该在 Angular 订阅中使用 select with pipe?

如果指定的表超过 2 个,MySQL 查询不会返回结果