MySQL Workbench 1146错误与表别名

时间:2014-06-09 14:57:14

标签: mysql database mysql-workbench alias

我在workbench中有这个MySQL代码

1. SELECT `ΟΝΟΜΑΣΙΑ_ΠΡΟΪΟΝΤΟΣ`, `ΠΩΛΗΣΗ`
2. FROM(SELECT `ΟΝΟΜΑΣΙΑ_ΠΡΟΪΟΝΤΟΣ`, SUM(`ΠΟΣΟΤΗΤΑ`) AS `ΠΩΛΗΣΕΙΣ`
3. FROM `hospital`.`προιοντα`, `hospital`.`χρεωσεις_περιστατικων`
4. WHERE `hospital`.`προιοντα`.`ΚΩΔΙΚΟΣ_ΠΡΟΪΟΝΤΟΣ` = `hospital`.`χρεωσεις_περιστατικων`.`ΚΩΔΙΚΟΣ_ΠΡΟΪΟΝΤΟΣ` AND YEAR(`ΗΜ_ΝΙΑ_ΧΡΕΩΣΗΣ`) = 2013
5. GROUP BY `ΟΝΟΜΑΣΙΑ_ΠΡΟΪΟΝΤΟΣ`) AS `Π`
6. WHERE `ΠΩΛΗΣΗ` = (SELECT MAX(`ΠΩΛΗΣΕΙΣ`) FROM `Π`.`ΠΩΛΗΣΕΙΣ`);

第6行存在问题.MySQL Workbench无法识别表别名“Π”,因此它会引发错误:

  

错误代码:1146。表'π.πωλησεισ'不存在。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

因为Π是派生表而不是永久表,所以你不能像普通表一样在WHERE子句中使用它。而是在外部查询中包含MAX()计算。更改您的查询,如下所示

  SELECT `ΟΝΟΜΑΣΙΑ_ΠΡΟΪΟΝΤΟΣ`, `ΠΩΛΗΣΗ`
   FROM
    (
    SELECT `ΟΝΟΜΑΣΙΑ_ΠΡΟΪΟΝΤΟΣ`, 
    `ΠΩΛΗΣΗ`,
    SUM(`ΠΟΣΟΤΗΤΑ`) AS `ΠΩΛΗΣΕΙΣ`
     FROM `hospital`.`προιοντα`, `hospital`.`χρεωσεις_περιστατικων`
     WHERE `hospital`.`προιοντα`.`ΚΩΔΙΚΟΣ_ΠΡΟΪΟΝΤΟΣ` = 
    `hospital`.`χρεωσεις_περιστατικων`.`ΚΩΔΙΚΟΣ_ΠΡΟΪΟΝΤΟΣ` 
     AND YEAR(`ΗΜ_ΝΙΑ_ΧΡΕΩΣΗΣ`) = 2013
     GROUP BY `ΟΝΟΜΑΣΙΑ_ΠΡΟΪΟΝΤΟΣ`
     HAVING `ΠΩΛΗΣΗ` = MAX(`ΠΩΛΗΣΕΙΣ`)
    ) AS `Π`;
PS:顺便说一句,我也不知道MySQL在Alien Language中也有效。