1

我确定这是 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”表的主要查询中排除(那些),但我不知道我会怎么做这个?

任何人都可以帮助或指出我更清洁的方向吗?

4

2 回答 2

0

你可以做内部查询......你不能做

... WHERE blocker NOT IN (SELECT bloker_id FROM ...) 
于 2013-05-23T21:44:31.680 回答
0

您使用子选择。

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

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

于 2013-05-23T21:44:51.063 回答