我有以下sql查询
SELECT
vmm_user.username,
vmm_songs.*,
vmm_albums.desc,
vmm_albums.release,
vmm_albums.name,
AVG(vmm_songrating.rating) AS ratingavg,
COUNT(vmm_songrating.id) AS ratingcount
FROM
vmm_songs
LEFT JOIN
vmm_user
ON
vmm_songs.userid=vmm_user.id
LEFT JOIN
vmm_albums
ON
vmm_songs.albumid=vmm_albums.id
LEFT JOIN
vmm_songrating
ON
vmm_songs.id=vmm_songrating.songid
GROUP BY
vmm_songs.id
HAVING
COUNT(vmm_songrating.id) >= 2
ORDER BY
AVG(vmm_songrating.rating) DESC
LIMIT
10
这工作正常,但现在我必须知道用户是否已经投票给一首歌曲,这就是我的问题
评级表如下所示
id|songid|用户id|评级
我尝试过这样的事情
SELECT
...
COUNT(vmm_songrating.id) as hasvoted
...
OUTER JOIN
vmm_songrating
ON
vmm_songrating.userid = $id
...
$id 是用户 session ID
但它不起作用:/
最佳答案
您可以尝试将类似的内容添加到所选字段
SUM(case when vmm_songrating.userid = $id then 1 end) as hasvoted
关于mysql - 搜索至少1次命中,mysql并join,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17436521/