如何解决 MySQL Left WHERE 条件错误?

how to resolve MySQL Left WHERE condition error?

下面的语句给出的结果没有任何错误,

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 附近使用了正确的语法。

使用 having 和 group by - where 将不起作用,因为您正在尝试使用聚合函数进行过滤

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

当你使用聚合函数(如avg)时,你必须在其他列上使用group by, 当你使用 group by 时,你必须在聚合列上使用 having for set where 子句 像这样:

    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