获取未连接用户列表的 SQL 查询

Posted

技术标签:

【中文标题】获取未连接用户列表的 SQL 查询【英文标题】:SQL query to fetch unconnected user list 【发布时间】:2016-11-26 08:23:57 【问题描述】:

我有两个表,名为 Users & Connections

我需要从用户表中获取未连接的用户列表

例如 userid 1 已发送请求并连接到 4 和 6。那么如何编写查询来获取未与 userid(1) 连接的其他用户。

预期结果将是 userid =1

2      bb     b@a.com 
3      cc     c@c.com 
5      ff

感谢您的回答。

【问题讨论】:

【参考方案1】:

直截了当:

SELECT * from users a
WHERE userid != :userid
  AND not exists (select * from connections
                   where (userid = :userid and c_userid = a.userid)
                     or  (userid = a.userid and c_userid = :userid))

【讨论】:

【参考方案2】:

以下将返回所有不在连接表中的用户。

SELECT * FROM users AS u
    WHERE (SELECT count(*) FROM connections AS c
        WHERE c.userid=u.userid AND reqType != 0) = 0;

【讨论】:

【参考方案3】:

以下查询获取与 userid =1 无关的用户

select u.userid,u.name,u.email
from connections
left join users as u on connections.c_userid = u.userid
where connections.userid =1 and connections.reqtype in (0,1)

【讨论】:

【参考方案4】:

你试试这个查询

select *from users where userid not in (select c_userId from connenctions where where userid=1) and userid!=1

【讨论】:

以上是关于获取未连接用户列表的 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

SQL查询从列表中获取前“n”个分数

将Sql查询语句获取的数据插入到List列表里面

复杂的 SQL 连接查询 - 获取最新行

在同一个sql连接中获取2个不同的记录行

在连接上扩展 SQL 查询的最佳实践?

使用 html 下拉列表输入的 php 中的 SQL 查询