mySQL 子查询中出现错误 1064

mySQL Error 1064 in subquery

我知道这可能很愚蠢,但我花了 2 个小时来寻找错误,我的截止日期 运行 很短。你能帮忙吗?

这是代码

create view Children as
select avg(chAvg) as Avg_Children
from
(select CHILDREN.ID,
CHILDREN.PAT_ID,
CHILDREN.GENDER,
DRUGS.DRUG_TYPE,
count(CHILDREN.ID)/count(distinct(CHILDREN.PAT_ID)) as 'chAvg'
from CHILDREN
join PATIENTS
on CHILDREN.PAT_ID = PATIENTS.PATIENT_ID
join CASES
on PATIENTS.PATIENT_ID=CASES.PAT_ID
join DRUGS_TO_CASES
on CASES.CASE_ID = DRUGS_TO_CASES.CASE_ID
join DRUGS
on DRUGS_TO_CASES.DRUG_ID=DRUGS.ID
where DRUGS.DRUG_TYPE = 'tranquillisers'
group by CHILDREN.GENDER)

Workbench 是这样说的:

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 19

我无法重现此特定错误:

mysql> create view Children as
    -> select avg(chAvg) as Avg_Children
    -> from
    -> (select CHILDREN.ID,
    -> CHILDREN.PAT_ID,
    -> CHILDREN.GENDER,
    -> DRUGS.DRUG_TYPE,
    -> count(CHILDREN.ID)/count(distinct(CHILDREN.PAT_ID)) as 'chAvg'
    -> from CHILDREN
    -> join PATIENTS
    -> on CHILDREN.PAT_ID = PATIENTS.PATIENT_ID
    -> join CASES
    -> on PATIENTS.PATIENT_ID=CASES.PAT_ID
    -> join DRUGS_TO_CASES
    -> on CASES.CASE_ID = DRUGS_TO_CASES.CASE_ID
    -> join DRUGS
    -> on DRUGS_TO_CASES.DRUG_ID=DRUGS.ID
    -> where DRUGS.DRUG_TYPE = 'tranquillisers'
    -> group by CHILDREN.GENDER);
ERROR 1349 (HY000): View's SELECT contains a subquery in the FROM clause
mysql>

在子查询上使用别名并尽量避免使用与 table 相同的名称,即使 mysql 允许

create view VChildren as
select avg(chAvg) as Avg_Children
from
(select CHILDREN.ID,
CHILDREN.PAT_ID,
CHILDREN.GENDER,
DRUGS.DRUG_TYPE,
count(CHILDREN.ID)/count(distinct(CHILDREN.PAT_ID)) as 'chAvg'
from CHILDREN
join PATIENTS
on CHILDREN.PAT_ID = PATIENTS.PATIENT_ID
join CASES
on PATIENTS.PATIENT_ID=CASES.PAT_ID
join DRUGS_TO_CASES
on CASES.CASE_ID = DRUGS_TO_CASES.CASE_ID
join DRUGS
on DRUGS_TO_CASES.DRUG_ID=DRUGS.ID
where DRUGS.DRUG_TYPE = 'tranquillisers'
group by CHILDREN.GENDER)x