使用JOIN/GROUP BY时的MySQL案例

使用JOIN/GROUP BY时的MySQL案例,mysql,sql,Mysql,Sql,我有一张posts表格。我将通过以下方式加入投票表: SELECT posts.*, (CASE WHEN vs.user_id = 1 THEN 0 ELSE 1 END) AS voted_by_me FROM `posts` LEFT OUTER JOIN votes AS vs ON vs.post_id = posts.id GROUP BY posts.id 基本上我想知道连接值vs.user_id=1。

我有一张
posts
表格。我将通过以下方式加入投票表:

SELECT posts.*,
       (CASE
            WHEN vs.user_id = 1 THEN 0
            ELSE 1
        END) AS voted_by_me
FROM `posts`
LEFT OUTER JOIN votes AS vs ON vs.post_id = posts.id
GROUP BY posts.id
基本上我想知道连接值vs.user_id=1。这显然是行不通的,因为它只会在条件发生时使用一个随机返回值。我想知道是否有办法确定join values group by是否包含特定的值

澄清: 我希望获得所有帖子,并且每个帖子都有一个名为“投票人”的列,如果帖子是由id为1的用户投票的,则将其值设为0,否则为1。

这就是您想要的吗

SELECT posts.id,
       sum(vs.user_id = 1 AND vs.option = 0) > 0 AS downvoted_by_me,
       sum(vs.user_id = 1 AND vs.option = 1) > 0 AS upvoted_by_me
FROM `posts`
LEFT OUTER JOIN votes AS vs ON vs.post_id = posts.id
GROUP BY posts.id
SELECT posts.id,
       ifnull(vs.isvoted, 0) AS voted_by_me
FROM `posts`
LEFT OUTER JOIN (select distinct postid , 1 as isvoted from votes where user_id=1) AS vs
ON vs.post_id = posts.id