如果ID为Blocked,则从MySQL查询中排除行


Excluding Row From MySQL Query If ID is Blocked

我确信这是MySQL 101,如果答案很简单,我很抱歉,但我有点卡住了,所以我在这里。

我有一个名为'site_members'的用户表,其中包含各种字段,但重要的是,每个字段都有唯一的id。

我还有一个非常简单的双字段表,名为'blocked_members',其中包含被登录用户阻止的用户的id,它被简单地设置为存储被阻止的人的用户id和阻止者的用户id:

Field 1 | Blocked
Field 2 | Blocker

在我对'site_members'表运行查询之前,我对'blocked_members'表运行查询,以找出当前登录的用户是否出现在任何一列中:

$sql = "SELECT * FROM blocked_members WHERE blocker = '$loggedin_id'  OR blocked = '$loggedin_id' ";

接下来我需要做的是从登录用户的id出现的每一行中获得相应的用户id,并从'site_members'表上的主查询中排除该(那些),但我不知道我将如何做到这一点?

谁能帮我或给我指出一个更清晰的方向?

使用子选择

SELECT * FROM whatever WHERE posting_user_id NOT IN
(SELECT blockedid FROM blocklist WHERE blockerid = <<current user viewing the page>>)

,同时插入要应用黑名单的用户ID。

你可以做内部查询…你可以做

... WHERE blocker NOT IN (SELECT bloker_id FROM ...)