如何解决 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
下面的语句给出的结果没有任何错误,
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