如何在MySQL中编写IF ELSE语句

时间:2014-06-27 13:27:10

标签: php mysql sql

我有表postsusers

基本上我想查询privacy表的posts列是0,这意味着帖子是public,我想向所有人展示这一点。但如果privacy列为1,2,3,4,则表示此帖仅适用于ID为1, 2, 3 and 4的用户

1 个答案:

答案 0 :(得分: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;