在Mysql中排除结果,而不是IN

时间:2012-11-30 07:57:29

标签: php mysql sql

我需要帮助来编写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) 我不应该让詹姆斯院长(用户表中的id 2)因为他阻止了我。

2 个答案:

答案 0 :(得分:3)

不确定如何使用php运行它,但我认为这个SQL应该按照你的要求执行:

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

评论后编辑: 抱歉,我误读了id列名称。现在应该修好。

答案 1 :(得分:0)

尝试此查询:

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