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

问题描述 投票:1回答:2

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

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

mysql left-join where
2个回答
2
投票

使用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

1
投票

当您使用聚合函数(如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
© www.soinside.com 2019 - 2024. All rights reserved.