我正在开发一个应用程序,用户可以上传图像,其他人可以对其进行投票。 我不想向用户显示问题,已经由同一个用户投票,这可以通过类似
的方式解决SELECT * FROM questions q JOIN votes v ON v.question_id = q.id WHERE v.userd_id != 1
但是当多个用户投票时,这种方式无效。我的另一个问题是,可能并不总是对问题进行投票,这意味着如果没有投票,问题根本就没有显示,我尝试使用左连接,但无法使其工作。< / p>
可悲的是我的sql有点生疏,希望有人可以帮助我,谢谢你。
答案 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