我在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。表'π.πωλησεισ'不存在。
我该怎么办?
答案 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
中也有效。