MySQL 'union all' 没有返回第二个 select 语句的信息
MySQL 'union all' not bringing back information for second select statement
编辑:UNION 和 UNION ALL 具有相同的结果。
我有以下声明 - 我原以为这会带回以下列
我意识到我是从同一个 table 向 UNION 请求的,这有关系吗?我需要为 'hotel_name, company, hotel_1 and q351' 取回数据 - 这可能吗?
hotel_name,公司,hotel_1 和 q351
(SELECT hotel_name, company,
((AVG (q1) + AVG(q2) + AVG(q3) + AVG(q4) + AVG(q5) + AVG(q6) + AVG(q7) + AVG(q8) + AVG(q9) + AVG(q10) + AVG(q11) + AVG(q12) + AVG(q13) + AVG(q14) + AVG(q15) + AVG(q16) + AVG(q17) + AVG(q18) + AVG(q19) + AVG(q20) + AVG(q21) + AVG(q22) + AVG(q23)+ AVG(q24)+ AVG(q25) ) / 25 ) AS hotel_1
FROM thotels_respondents
LEFT JOIN thotels_results_new ON thotels_respondents.login_id = thotels_results_new.company AND thotels_results_new.sdate = 'NOV2014'
WHERE thotels_respondents.brand = 'ACME' AND thotels_respondents.sdate = 'NOV2014' AND completion_status = 'Not Started'
GROUP BY hotel_name
ORDER BY hotel_name)
UNION ALL
(SELECT hotel_name, company,
((AVG (q1) + AVG(q2) + AVG(q3) + AVG(q4) + AVG(q5) + AVG(q6) + AVG(q7) + AVG(q8) + AVG(q9) + AVG(q10) + AVG(q11) + AVG(q12) + AVG(q13) + AVG(q14) + AVG(q15) + AVG(q16) + AVG(q17) + AVG(q18) + AVG(q19) + AVG(q20) + AVG(q21) + AVG(q22) + AVG(q23)+ AVG(q24)+ AVG(q25) ) / 25 ) AS q351
FROM thotels_respondents
LEFT JOIN thotels_results_new ON thotels_respondents.login_id = thotels_results_new.company AND thotels_results_new.sdate = 'NOV2014'
WHERE q35 = 1 AND thotels_respondents.brand = 'ACME' AND thotels_respondents.sdate = 'NOV2014' AND completion_status = 'Not Started'
GROUP BY hotel_name
ORDER BY hotel_name)
但它实际上只带回以下数据:
hotel_name,公司,hotel_1
缺少 q351
我只能推测我错误地使用了 UNION ALL - 谁能指出我哪里出错了?
从聚合函数中的 WHERE 移动不同的条件
SELECT hotel_name, company,
((AVG (q1) + AVG(q2) + AVG(q3) + AVG(q4) + AVG(q5) + AVG(q6) + AVG(q7) + AVG(q8) + AVG(q9) + AVG(q10) + AVG(q11) + AVG(q12) + AVG(q13) + AVG(q14) + AVG(q15) + AVG(q16) + AVG(q17) + AVG(q18) + AVG(q19) + AVG(q20) + AVG(q21) + AVG(q22) + AVG(q23)+ AVG(q24)+ AVG(q25) ) / 25 ) AS hotel_1,
((AVG (CASE WHEN q35 = 1 THEN q1 END) + AVG(CASE WHEN q35 = 1 THEN q2 END) + AVG(CASE WHEN q35 = 1 THEN q3 END) + AVG(CASE WHEN q35 = 1 THEN q4 END) + AVG(CASE WHEN q35 = 1 THEN q5 END) + AVG(CASE WHEN q35 = 1 THEN q6 END) + AVG(CASE WHEN q35 = 1 THEN q7 END) + AVG(CASE WHEN q35 = 1 THEN q8 END) + AVG(CASE WHEN q35 = 1 THEN q9 END) + AVG(CASE WHEN q35 = 1 THEN q10 END) + AVG(CASE WHEN q35 = 1 THEN q11 END) + AVG(CASE WHEN q35 = 1 THEN q12 END) + AVG(CASE WHEN q35 = 1 THEN q13 END) + AVG(CASE WHEN q35 = 1 THEN q14 END) + AVG(CASE WHEN q35 = 1 THEN q15 END) + AVG(CASE WHEN q35 = 1 THEN q16 END) + AVG(CASE WHEN q35 = 1 THEN q17 END) + AVG(CASE WHEN q35 = 1 THEN q18 END) + AVG(CASE WHEN q35 = 1 THEN q19 END) + AVG(CASE WHEN q35 = 1 THEN q20 END) + AVG(CASE WHEN q35 = 1 THEN q21 END) + AVG(CASE WHEN q35 = 1 THEN q22 END) + AVG(CASE WHEN q35 = 1 THEN q23 END)+ AVG(CASE WHEN q35 = 1 THEN q24 END)+ AVG(CASE WHEN q35 = 1 THEN q25 END) ) / 25 ) AS q351
FROM thotels_respondents
LEFT JOIN thotels_results_new ON thotels_respondents.login_id = thotels_results_new.company AND thotels_results_new.sdate = 'NOV2014'
WHERE thotels_respondents.brand = 'ACME' AND thotels_respondents.sdate = 'NOV2014' AND completion_status = 'Not Started'
GROUP BY hotel_name
ORDER BY hotel_name
编辑:UNION 和 UNION ALL 具有相同的结果。
我有以下声明 - 我原以为这会带回以下列
我意识到我是从同一个 table 向 UNION 请求的,这有关系吗?我需要为 'hotel_name, company, hotel_1 and q351' 取回数据 - 这可能吗?
hotel_name,公司,hotel_1 和 q351
(SELECT hotel_name, company,
((AVG (q1) + AVG(q2) + AVG(q3) + AVG(q4) + AVG(q5) + AVG(q6) + AVG(q7) + AVG(q8) + AVG(q9) + AVG(q10) + AVG(q11) + AVG(q12) + AVG(q13) + AVG(q14) + AVG(q15) + AVG(q16) + AVG(q17) + AVG(q18) + AVG(q19) + AVG(q20) + AVG(q21) + AVG(q22) + AVG(q23)+ AVG(q24)+ AVG(q25) ) / 25 ) AS hotel_1
FROM thotels_respondents
LEFT JOIN thotels_results_new ON thotels_respondents.login_id = thotels_results_new.company AND thotels_results_new.sdate = 'NOV2014'
WHERE thotels_respondents.brand = 'ACME' AND thotels_respondents.sdate = 'NOV2014' AND completion_status = 'Not Started'
GROUP BY hotel_name
ORDER BY hotel_name)
UNION ALL
(SELECT hotel_name, company,
((AVG (q1) + AVG(q2) + AVG(q3) + AVG(q4) + AVG(q5) + AVG(q6) + AVG(q7) + AVG(q8) + AVG(q9) + AVG(q10) + AVG(q11) + AVG(q12) + AVG(q13) + AVG(q14) + AVG(q15) + AVG(q16) + AVG(q17) + AVG(q18) + AVG(q19) + AVG(q20) + AVG(q21) + AVG(q22) + AVG(q23)+ AVG(q24)+ AVG(q25) ) / 25 ) AS q351
FROM thotels_respondents
LEFT JOIN thotels_results_new ON thotels_respondents.login_id = thotels_results_new.company AND thotels_results_new.sdate = 'NOV2014'
WHERE q35 = 1 AND thotels_respondents.brand = 'ACME' AND thotels_respondents.sdate = 'NOV2014' AND completion_status = 'Not Started'
GROUP BY hotel_name
ORDER BY hotel_name)
但它实际上只带回以下数据:
hotel_name,公司,hotel_1
缺少 q351
我只能推测我错误地使用了 UNION ALL - 谁能指出我哪里出错了?
从聚合函数中的 WHERE 移动不同的条件
SELECT hotel_name, company,
((AVG (q1) + AVG(q2) + AVG(q3) + AVG(q4) + AVG(q5) + AVG(q6) + AVG(q7) + AVG(q8) + AVG(q9) + AVG(q10) + AVG(q11) + AVG(q12) + AVG(q13) + AVG(q14) + AVG(q15) + AVG(q16) + AVG(q17) + AVG(q18) + AVG(q19) + AVG(q20) + AVG(q21) + AVG(q22) + AVG(q23)+ AVG(q24)+ AVG(q25) ) / 25 ) AS hotel_1,
((AVG (CASE WHEN q35 = 1 THEN q1 END) + AVG(CASE WHEN q35 = 1 THEN q2 END) + AVG(CASE WHEN q35 = 1 THEN q3 END) + AVG(CASE WHEN q35 = 1 THEN q4 END) + AVG(CASE WHEN q35 = 1 THEN q5 END) + AVG(CASE WHEN q35 = 1 THEN q6 END) + AVG(CASE WHEN q35 = 1 THEN q7 END) + AVG(CASE WHEN q35 = 1 THEN q8 END) + AVG(CASE WHEN q35 = 1 THEN q9 END) + AVG(CASE WHEN q35 = 1 THEN q10 END) + AVG(CASE WHEN q35 = 1 THEN q11 END) + AVG(CASE WHEN q35 = 1 THEN q12 END) + AVG(CASE WHEN q35 = 1 THEN q13 END) + AVG(CASE WHEN q35 = 1 THEN q14 END) + AVG(CASE WHEN q35 = 1 THEN q15 END) + AVG(CASE WHEN q35 = 1 THEN q16 END) + AVG(CASE WHEN q35 = 1 THEN q17 END) + AVG(CASE WHEN q35 = 1 THEN q18 END) + AVG(CASE WHEN q35 = 1 THEN q19 END) + AVG(CASE WHEN q35 = 1 THEN q20 END) + AVG(CASE WHEN q35 = 1 THEN q21 END) + AVG(CASE WHEN q35 = 1 THEN q22 END) + AVG(CASE WHEN q35 = 1 THEN q23 END)+ AVG(CASE WHEN q35 = 1 THEN q24 END)+ AVG(CASE WHEN q35 = 1 THEN q25 END) ) / 25 ) AS q351
FROM thotels_respondents
LEFT JOIN thotels_results_new ON thotels_respondents.login_id = thotels_results_new.company AND thotels_results_new.sdate = 'NOV2014'
WHERE thotels_respondents.brand = 'ACME' AND thotels_respondents.sdate = 'NOV2014' AND completion_status = 'Not Started'
GROUP BY hotel_name
ORDER BY hotel_name