mysql检查组中是否存在值

Emi*_*man 3 mysql sql group-by aggregate

我有一个名为表votes的列id,image_id,user_idtime.

如果特定user_id是每个选票之一,我如何在结果中添加一个bool image_id

SELECT image_id,
count(image_id) as vote_count
FROM votes
GROUP BY image_id 
ORDER BY vote_count DESC
Run Code Online (Sandbox Code Playgroud)

我已经尝试过,if(user_id = 18, 1, 0) as have_voted但它并不适合每个人image_id.

Woo*_*kai 8

那么总结所有user_id你想要的行,并检查这个总和是否大于0?

SELECT image_id,
count(image_id) as vote_count,
SUM(IF(user_id = 18,1,0)) > 0 AS hasUser18
FROM votes
GROUP BY image_id 
ORDER BY vote_count DESC
Run Code Online (Sandbox Code Playgroud)

  • 一个更简单的表达式是`max(user_id = 1)`. (6认同)