1

我需要帮助来编写 SQL,但我不知道在这种情况下如何。尝试了许多不同的选项,但没有任何效果。

我的 mysql 数据库中有 2 个表

users (id, name, lastname)
blocked_users (id, user_id, blocked_id)

users table
id  name    lastname
1   nick    james
2   james   dean
3   mike    bendon

blocked_users table
id  user_id     blocked_id
1   2           1
2   2           3

例子:

我想做的是在用户表中显示所有用户,但在这种情况下排除那些被 user_id 2 阻止的用户。

因此,如果我以 Mike Bendon(用户表中的 id 3)身份登录,我应该无法看到 james dean(用户表中的 id 2),因为他阻止了我。

4

2 回答 2

3

不知道如何用 php 运行它,但我认为这个 SQL 应该满足你的要求:

SELECT *
FROM users
WHERE id NOT IN
(SELECT user_id FROM blocked_users WHERE blocked_id = $logged_id);

评论后编辑:对不起,我看错了id列名。现在应该修好了。

于 2012-11-30T08:02:21.417 回答
0

试试这个查询:

SELECT * 
FROM   users 
WHERE  id NOT IN (
       SELECT user_id 
       FROM   blocked_users 
       WHERE  blocked_id=$current_user_id);
于 2012-11-30T08:07:20.430 回答