簡體   English   中英

如何從mysql內部聯接查詢中過濾結果

[英]how to filter results from mysql inner join query

我的多對多關系有問題。

客戶端表列: clientID,名稱,地址等。

用戶表列: userID,名稱,地址等。

Users_clients列: userID,clientID。

每個客戶端可以連接多個用戶,而用戶可以具有多個客戶端。

現在,我的users_clients表包含以下內容:

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和client2,則不會顯示該查詢。

該查詢顯示

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM