以下语句给出了没有任何错误的结果,
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 - 在你尝试使用聚合函数进行过滤时将无法工作
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时,必须在聚合列上使用for where 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