mysql - 搜索至少1次命中,mysql并join

标签 mysql join count

我有以下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/

相关文章:

每个办公室邮政编码的 MySQL 查询频率

PHP 没有看到 mysql 扩展

mysql - 两个语句之间的计算

Oracle 的 OUTER JOIN (+) on string - Migration PostgreSQL

sql - 两表三列变一表四列

sql - 如何使用子组合对许多单独的表进行有效组合

java - 计算有多少个被replaceFirst和StringUtils.countMatches替换

php - 从MYSQL数据库下载文件

javascript - 使用javascript函数调用ajax更新MYSQL结果

C# 列表计数始终返回 1,即使列表为空