简体   繁体   English

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

[英]SQL Query to get different records from two tables

i have two tables in my DB,One is User and contains user_id, second is user_follower and this contain user_id and follower_id(user_id of other user).我的数据库中有两个表,一个是 User 并包含 user_id,第二个是 user_follower,它包含 user_id 和 follower_id(其他用户的 user_id)。 i want to get user list but don't want to get those user in it that is already in user_follower table for current user.我想获取用户列表,但不想让当前用户的 user_follower 表中已有的用户进入其中。 for example i have user_id 1 and want to get user list for this, i want all user that is is not in user_followers as follower.例如,我有 user_id 1 并想为此获取用户列表,我希望所有不在 user_followers 中的用户作为关注者。 can some one help me in this.有人可以帮助我吗? please.请。

i tried我试过了

select user_id from user
MINUS
select user_id from user_followers 

but i get error on this , it is not supported by msql但我在这方面出错,msql 不支持它

You can use sub query in where clouse for filter data from multiple table您可以在 where clouse 中使用子查询来过滤多个表中的数据

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);

试试这个查询,它会帮助你

SELECT `user`.`user_id` FROM `user`  WHERE `user`.`user_id` NOT IN( select `user_id` from `user_followers`) 

Use JOIN .使用JOIN

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

Try the below query:试试下面的查询:

$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)

To view the results:查看结果:

 print_r($users_list->result_array());

使用子查询

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM