如何在MySQL中编写IF ELSE语句


How to write IF ELSE statements in MySQL

我有表postsusers

基本上我想查询posts表的privacy列是否为0,这意味着post是public,我想向大家展示这一点。但如果privacy列是1,2,3,4,这意味着这篇文章只适用于ID为1, 2, 3 and 4

的用户

这不是一个条件问题,它是一个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;

如果您想同时查找公共和关联的帖子,那么您可以使用逻辑或来匹配这两个规则。

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;