2017-08-31 67 views
0

這個mysql語句獲取未被用戶標記的帖子。有沒有更好的方法來做這個MYSQL語句?

現在,我得到標記的職位ID,然後沒有獲得該組ID的職位。

SELECT * FROM posts WHERE posts.id NOT IN 
(SELECT p2.id FROM posts p2 LEFT JOIN flagged_posts 
ON flagged_posts.user_id = ? WHERE flagged_posts.post_id = p2.id) 

我覺得有可能是一個更好的(更快)的方式只有一個選擇,一個加盟要做到這一點,例如,但我不知道

+0

如果您顯示錶結構,我可以優化我的答案 –

回答

0

可以使用條款EXISTS做到這一點。

SELECT * FROM posts 
WHERE 
    NOT EXISTS 
     (SELECT 1 
     FROM flagged_posts 
     WHERE flagged_posts.post_id=posts.post_id AND flagged_posts.user_id=?) 

或者,您可以使用LEFT OUTER JOIN來做到這一點。

SELECT * 
FROM posts 
LEFT OUTER JOIN flagged_posts ON posts.post_id = flagged_posts.post_id 
AND flagged_posts.user_id=? 
WHERE flagged_posts.post_id IS NULL 
相關問題