2014-06-27 56 views
0

ELSE語句我有表postsusers如何寫IF在MySQL

基本上我想查詢是否列privacyposts0這意味着職位是public,我想展示給大家。但如果privacy1,2,3,4這意味着這個職位只對用戶ID 1, 2, 3 and 4

+0

你的查詢結果應該是什麼? –

+1

你想說,你的隱私專欄中有逗號分隔的值嗎?這幾乎不會是一個好主意。 – VMai

+0

你可以發佈sqlfiddle與你的數據庫架構和一些示例數據嗎? – DevelopmentIsMyPassion

回答

0

這不是一個有條件的問題,這是一個SQL連接到表的關聯問題。

您需要創建一個將帖子與用戶關聯的連接表。然後,您可以使用聯合來根據他們對用戶的分配來選擇帖子。

的SQL可能是這個樣子

要選擇分配給用戶ID的帖子= 4

SELECT * FROM `posts` 
    LEFT JOIN `posts_users` ON (`posts`.`id` = `posts_users`.`post_id`) 
    WHERE `posts_users`.`user_id` = 4; 

你也做了假設,如果一個職位沒有分配給它的用戶,那麼它的一個公共職位。這需要檢查NULL關聯。

SELECT * FROM `posts` 
    LEFT JOIN `posts_users` ON (`posts`.`id` = `posts_users`.`post_id`) 
    WHERE `posts_users`.`user_id` IS NULL; 

如果你想查找公共和相關的帖子,那麼你使用邏輯OR來匹配這兩個規則。

SELECT * FROM `posts` 
    LEFT JOIN `posts_users` ON (`posts`.`id` = `posts_users`.`post_id`) 
    WHERE `posts_users`.`user_id` = 4 
     OR `posts_users`.`user_id` IS NULL; 
+0

我想要查詢結果,個人在「隱私」列或「隱私」列中的個人帖子爲0(公開),因此此人可以看到它。 – user2765602

+0

@ user2765602當然,請參閱我的編輯。 – cgTag

+0

whats'posts_users'? – user2765602