仅在记录没有关联或者关联不包含特定用户ID时选择

时间:2014-11-03 13:26:39

标签: sql

我正在开发一个应用程序,用户可以上传图像,其他人可以对其进行投票。 我不想向用户显示问题,已经由同一个用户投票,这可以通过类似

的方式解决
SELECT * FROM questions q JOIN votes v ON v.question_id = q.id WHERE v.userd_id != 1

但是当多个用户投票时,这种方式无效。我的另一个问题是,可能并不总是对问题进行投票,这意味着如果没有投票,问题根本就没有显示,我尝试使用左连接,但无法使其工作。< / p>

可悲的是我的sql有点生疏,希望有人可以帮助我,谢谢你。

1 个答案:

答案 0 :(得分:0)

您可以使用NOT EXISTS排除记录:

SELECT  * 
FROM    questions AS q
WHERE   NOT EXISTS
        (   SELECT  1
            FROM    votes AS v 
            WHERE   v.question_id = q.id 
            AND     v.userd_id = 1
        );

如果您正在使用MySQL,那么您可能会发现using LEFT JOIN/IS NULL performs better

SELECT  q.*
FROM    questions AS q
        LEFT JOIN Votes AS v
            ON v.question_id = q.id 
            AND v.User_ID = 1
WHERE   v.Question_ID IS NULL