MYSQL每个表必须有自己的别名错误?

时间:2018-02-27 19:51:13

标签: mysql mysql-workbench

我正在尝试执行嵌套的选择查询,但我不断收到同样的错误,说每个表都必须有自己的别名。

SELECT 
  Sum(SumOfASSIGN_HOURS) AS SumOfSumOfASSIGN_HOURS, 
  Sum(SumOfASSIGN_CHARGE) AS SumOfSumOfASSIGN_CHARGE
FROM (
  SELECT ASSIGNMENT.PROJ_NUM, SUM(ASSIGNMENT.ASSIGN_HOURS) AS SumOfASSIGN_HOURS,
  SUM(ASSIGNMENT.ASSIGN_CHARGE) AS SumOfASSIGN_CHARGE
  FROM (ASSIGNMENT)
  GROUP BY ASSIGNMENT.PROJ_NUM);

我是MYSQL的新手,我无法弄清楚我做错了什么。

3 个答案:

答案 0 :(得分:0)

这里的问题是你创建了一个派生表(子查询),并且必须给它别名AS aliasName或其他任何东西。只需在您的子查询中提供别名,如下所示,您应该没问题。

SELECT 
Sum(aliasName.SumOfASSIGN_HOURS) AS SumOfSumOfASSIGN_HOURS,
Sum(aliasName.SumOfASSIGN_CHARGE) AS SumOfSumOfASSIGN_CHARGE
FROM(
SELECT ASSIGNMENT.PROJ_NUM, SUM(ASSIGNMENT.ASSIGN_HOURS) AS
SumOfASSIGN_HOURS,SUM(ASSIGNMENT.ASSIGN_CHARGE) AS SumOfASSIGN_CHARGE
FROM ASSIGNMENT 
GROUP BY ASSIGNMENT.PROJ_NUM
) aliasName;

您可以在官方文档here上看到更多内容,其中包含

  

子查询在SELECT语句的FROM子句中是合法的。实际语法是:

     

SELECT ... FROM(子查询)[AS]名称......

     

[AS] name子句是必需的,因为FROM子句中的每个表都必须具有名称。子查询选择列表中的任何列都必须具有唯一的名称。

答案 1 :(得分:0)

通过阅读您的查询,您似乎可以跳过子查询。您的查询应如下所示:

SELECT PROJ_NUM, SUM(ASSIGN_HOURS) AS SumOfASSIGN_HOURS, 
SUM(ASSIGN_CHARGE) AS SumOfASSIGN_CHARGE                       
FROM ASSIGNMENT
GROUP BY PROJ_NUM

答案 2 :(得分:0)

您必须在FROM(选择.....)表中添加名称,例如添加一个简单的别名为T

e 38088 i 20283 w 8390 b 5293 q 191
t 30897 s 18831 m 7686 p 5275 z 161
o 24944 r 16751 c 7301 k 3207
a 24873 d 15567 y 7139 v 2551
n 21510 l 12780 g 7109 j 751
h 20360 u 9624 f 6499 x 439