如何过滤来自 mysql 内连接查询的结果

how to filter results from mysql inner join query

我的多对多关系有问题。

客户端 table 列: clientID、姓名、地址等

用户 table 列: 用户名、姓名、地址等

Users_clients 列: 用户ID,客户端ID。

每个客户端可以有多个用户,一个用户可以有多个客户端。

现在我的 users_clients table 包含这个:

userID | clientID<br>
1      | 2
1      | 3
2      | 2
2      | 3
3      | 3
3      | 2
4      | 1

在我的 php 页面上,我想要一个尚未附加到客户端的用户列表。

例如。如果我点击具有 clientID = 3 的客户资料 它应该向我显示未附加到此客户端的用户列表。

SELECT u.name, u.email, u.userID FROM users u
  INNER JOIN users_clients uc
    ON u.userID = uc.userID 
  WHERE uc.clientID !=3

这工作正常,但我如何创建我的 MySQL 查询,以便如果用户同时拥有 clientID 3 和 clientID 2,它就不会显示。

此查询显示

1|2 2|2 3|2 4|1

我要找的是:

3|2 4|1

希望这对您有意义。欢迎提问:)

您可以采用不同的处理方式。

首先发出一个请求,寻找每个 clientId = 3 的用户;

select u.id from users u
INNER JOIN users_clients uc
ON u.userID = uc.userID 
WHERE uc.clientID =3;

然后您可以使用此请求获取除 clientId = 3 以外的所有用户。

最终请求如下所示:

select u.id from users u where u.id NOT IN (select u.id from users u
INNER JOIN users_clients uc
ON u.userID = uc.userID 
WHERE uc.clientID =3);

希望这会有所帮助;

您是否尝试过 DISTINCT 指令?

select distinct u.id from users u
INNER JOIN users_clients uc
ON u.userID = uc.userID 
WHERE uc.clientID =3;