从两个表中获取不同的记录的SQL查询

3
我在我的数据库中有两个表,一个是用户(User),包含user_id字段,另一个是用户关注者(user_follower),包含user_id和follower_id字段(其他用户的user_id)。我想获取用户列表,但不想获取当前用户在user_follower表中已经存在的用户。 例如,我有一个user_id为1的用户,并希望为其获取用户列表,我希望获取那些不在user_followers表中作为follower的用户。 有人可以帮助我吗? 谢谢。
select user_id from user
MINUS
select user_id from user_followers 

但是我在这里遇到了错误,它不受 MySQL 支持。

1
你尝试过什么了吗?你能给我们展示一些代码吗? - rsz
欢迎来到SO。 请阅读可以提问哪些话题如何提出好问题,以及完美的问题。SO不是免费的编码、代码转换、教程或库查找服务。您还需要展示您已经尝试解决自己的问题。 - RiggsFolly
@rsz,你现在能看到我的问题了吗?我已经编辑过了。 - Nadeem Yousaf
@RiggsFolly 我尝试过这个,但是我遇到了错误。 - Nadeem Yousaf
5个回答

3

您可以在where子句中使用子查询来过滤来自多个表的数据。

SELECT t.user_id from user t
     WHERE NOT IN(SELECT uf.user_id FROM user_followers uf
                 WHERE uf.user_id = t.user_id);

1
尝试这个查询,它会帮助你。
SELECT `user`.`user_id` FROM `user`  WHERE `user`.`user_id` NOT IN( select `user_id` from `user_followers`) 

0
使用 JOIN
select U.user_id from user U
INNER JOIN user_followers UF ON U.user_id = UF.user_id

0

尝试下面的查询:

$users_list = $this->db->select("u.*",FALSE)
    ->from("user u")
    ->join("user_follower uf","u.user_id != uf.user_id")
    ->get();

//The query is:
//SELECT u.* FROM user u INNER JOIN user_follower uf ON (u.user_id != uf.user_id)

查看结果:

 print_r($users_list->result_array());

0

使用子查询

select user_id from `user` where user_id not in (select user_id from user_followers)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接