我会回答,但为什么?Mysql第一次查询运行第二次不需要理解为什么?
这个SQL查询有效,但第二个查询无效。有人能解释一下为什么和/或如何使它有效吗 第一个是基于行的选择,第二个是我希望所有列和行更接近全局平均值。名称可能有1到X个条目,因此必须按名称分组我会回答,但为什么?Mysql第一次查询运行第二次不需要理解为什么?,mysql,subquery,Mysql,Subquery,这个SQL查询有效,但第二个查询无效。有人能解释一下为什么和/或如何使它有效吗 第一个是基于行的选择,第二个是我希望所有列和行更接近全局平均值。名称可能有1到X个条目,因此必须按名称分组 SELECT NAME, AVERAGE, AD1, AD2, AD3, AD4, AD5, AD6, (AD1 + AD2 + AD3 + AD4 + AD5 + AD6) AS TOTAL_AD FROM ( SELECT NAME, AVERAGE
SELECT NAME,
AVERAGE,
AD1, AD2, AD3, AD4, AD5, AD6,
(AD1 + AD2 + AD3 + AD4 + AD5 + AD6) AS TOTAL_AD
FROM ( SELECT
NAME,
AVERAGE,
(AVG1-AVERAGE) AS AD1,
(AVG2-AVERAGE) AS AD2,
(AVG3-AVERAGE) AS AD3,
(AVG4-AVERAGE) AS AD4,
(AVG5-AVERAGE) AS AD5,
(AVG6-AVERAGE) AS AD6
FROM P_AVG ) AS T
ORDER BY NAME;
按预期运行
SELECT NAME,
AVG(AVERAGE),
AD1, AD2, AD3, AD4, AD5, AD6,
(AD1 + AD2 + AD3 + AD4 + AD5 + AD6) AS TOTAL_AD
FROM ( SELECT
NAME,
AVG(AVERAGE),
(AVG(AVG1)-AVG(AVERAGE)) AS AD1,
(AVG(AVG2)-AVG(AVERAGE)) AS AD2,
(AVG(AVG3)-AVG(AVERAGE)) AS AD3,
(AVG(AVG4)-AVG(AVERAGE)) AS AD4,
(AVG(AVG5)-AVG(AVERAGE)) AS AD5,
(AVG(AVG6)-AVG(AVERAGE)) AS AD6
FROM P_AVG GROUP BY NAME ) AS T;
Mysql为列所在的查询返回此错误
1054-未知列“字段列表”中的“平均值”
不运行并返回错误
这解决了问题,但为什么
SELECT NAME,
AD,
AD1, AD2, AD3, AD4, AD5, AD6,
(AD1 + AD2 + AD3 + AD4 + AD5 + AD6) AS TOTAL_AD
FROM ( SELECT
NAME,
(AVG(AVERAGE)) AS AD,
(AVG(AVG1)-AVG(AVERAGE)) AS AD1,
(AVG(AVG2)-AVG(AVERAGE)) AS AD2,
(AVG(AVG3)-AVG(AVERAGE)) AS AD3,
(AVG(AVG4)-AVG(AVERAGE)) AS AD4,
(AVG(AVG5)-AVG(AVERAGE)) AS AD5,
(AVG(AVG6)-AVG(AVERAGE)) AS AD6
FROM P_AVG GROUP BY NAME ) AS T;
在您的查询中,错误是由于缺少AVGAVERAGE的正确别名造成的 实际上,您正在通过外部选择一个不存在的列名 尝试在此列中添加适当的别名,例如:
AVG(AVERAGE) AVERAGE
SELECT NAME,
AVG(AVERAGE),
AD1, AD2, AD3, AD4, AD5, AD6,
(AD1 + AD2 + AD3 + AD4 + AD5 + AD6) AS TOTAL_AD
FROM (
SELECT
NAME,
AVG(AVERAGE) AVERAGE,
(AVG(AVG1)-AVG(AVERAGE)) AS AD1,
(AVG(AVG2)-AVG(AVERAGE)) AS AD2,
(AVG(AVG3)-AVG(AVERAGE)) AS AD3,
(AVG(AVG4)-AVG(AVERAGE)) AS AD4,
(AVG(AVG5)-AVG(AVERAGE)) AS AD5,
(AVG(AVG6)-AVG(AVERAGE)) AS AD6
FROM P_AVG
GROUP BY NAME ) AS T;