как разрешить MySQL Left WHERE ошибка условия? - PullRequest
1 голос
/ 13 марта 2019

Следующее утверждение дает результаты без ошибок,

select 
title as 'unreviewed series', 
rating from series 
left join reviews 
    on series.id= reviews.series_id  
where rating is null;

Однако следующее выдает ошибку:

select title as 'unreviewed series', 
ifnull(avg(rating), null) as 'Average Rating' 
from series 
left join reviews 
    on series.id= reviews.series_id  
where avg(rating) = null;

Ошибка, выданная mysql, заключается в использовании правильного синтаксиса около WHERE.

Ответы [ 2 ]

2 голосов
/ 13 марта 2019

используйте наличие и группирование по - где не будет работать, так как вы пытаетесь фильтровать с агрегированной функцией

select title as 'unreviewed series', 
ifnull(avg(rating), null) as 'Average Rating' 
from series 
left join reviews 
    on series.id= reviews.series_id  
group by title
having avg(rating) is null
1 голос
/ 13 марта 2019

Когда вы используете агрегатную функцию (например, avg), вы должны использовать group by для других столбцов, А когда вы используете group by, вы должны использовать условие for для агрегированного столбца Как это:

    select title as 'unreviewed series', 
ifnull(avg(rating), null) as 'Average Rating' 
from series 
left join reviews on series.id= reviews.series_id  
group by title
having avg(rating) is null
...