AVG +内部联接

时间:2013-06-10 19:43:27

标签: mysql join group-by average

我正在尝试制作类似于图表列表的内容,而我的实际查询是这样的:

SELECT 
    user.username, 
    songs.*, 
    albums.desc, 
    albums.release, 
    albums.name, 
    AVG(songrating.rating)  
FROM 
    songs 
INNER JOIN 
    user 
ON 
    songs.userid=user.id 
INNER JOIN 
    albums 
ON 
    songs.albumid=albums.id 
INNER JOIN  
    songrating  
ON 
    songs.id=songrating.songid 
GROUP BY 
songrating.songid

它只显示至少有一个评级条目的条目,但我也希望这些条目没有评级

我尝试将它用于if / case但它不起作用(或者我做错了)

如果我删除avg等,它可以正常工作。

1 个答案:

答案 0 :(得分:0)

可能是JOIN问题

INNER JOIN关键字选择两个表中的所有行,只要两个表中的列匹配即可。

LEFT JOIN关键字返回左表(table1)中的所有行,右表(table2)中的匹配行。当没有匹配时,结果在右侧为NULL。

尝试LEFT JOIN