Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我会回答,但为什么?Mysql第一次查询运行第二次不需要理解为什么?_Mysql_Subquery - Fatal编程技术网

我会回答,但为什么?Mysql第一次查询运行第二次不需要理解为什么?

我会回答,但为什么?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

这个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,
    (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;