我有表posts
和users
基本上我想查询privacy
表的posts
列是0
,这意味着帖子是public
,我想向所有人展示这一点。但如果privacy
列为1,2,3,4
,则表示此帖仅适用于ID为1, 2, 3 and 4
的用户
答案 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;