如何过滤来自 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;
我的多对多关系有问题。
客户端 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;