这是我的查询:
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/