我有 3 张桌子。
myMembers
------------------------------------
id | username | privacy
------------------------------------
1 | userA | 0
2 | userB | 1
3 | userC | 0
4 | userD | 1
following
--------------------------------
id | user_id | follower_id
--------------------------------
1 | 2 | 1
posts
-------------------------------------
id | userID | username | statusMsg
--------------------------------------
1 | 4 | userD | Issac Newton is genius
2 | 2 | userB | Newton Saw apple
3 | 3 | userC | Newtonian Physics
4 | 1 | userA | Calculus came from Sir Newton
有一个搜索字段。当登录用户在表“帖子”中搜索“关键字”时,我想省略那些将其隐私设置为“1”且搜索者未关注用户 B 的用户的结果。
查询在逻辑上应该这样做。
SELECT * from posts WHERE (match the keyword)
AND (
if (poster's privacy (which is set in myMembers)==1){
if (seacher is following poster){
select this post
}
}
else { select this post
}
)
LIMIT results to 5 rows
因此,对于关键字“Newton”,如果 userA 正在搜索,则应返回来自 'posts' 的第 2、3、4 行。如果 userD 正在搜索,则只应返回“posts”中的第 1、3 和 4 行,
基于隐私和以下编辑:标记以供将来搜索:mySql 中 WHERE 子句中的 IF 条件