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
我知道这可能很愚蠢,但我花了 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