2014-10-30 101 views
0

我有一個包含group_id,user_id和role_id的表。MySQL選擇重複項

由於唯一密鑰設置錯誤,所以有兩個用戶組在不同角色下。就像這樣:

group_id | user_id | role_id 
    1  |  1  |  1 
    1  |  1  |  2 
    2  |  1  |  1 
    1  |  2  |  1 
    2  |  2  |  3 

我如何才能找到其中這種情況下的用戶的用戶ID?那麼,在這個例子中只有用戶標識1?

編輯:

,因爲無論從@Manil Liyanage的答案,也沒有從@TX特納的人給我正確的結果,也許我解釋了吧更多一些;

用戶可以在多個組中,但他們不應該多次在某個組中。不幸的是,由於唯一密鑰錯誤,現在有些用戶不止一次在同一個組中,而只有另一個角色。我怎樣才能找到不止一次在一個組中的用戶?

+0

如果他們有相同的組不同的角色,他們重複或不? – Mihai 2014-10-30 17:33:32

回答

2

以下內容將顯示每個組中的哪些用戶標識符重複,以及計數。

SELECT user_id, group_id, COUNT(group_id) cnt 
FROM tablename 
GROUP BY user_id, group_id 
HAVING COUNT(group_id) > 1 
+0

對不起,這並沒有給我正確的結果。請看我編輯的問題。 – veelen 2014-10-30 19:21:47

+0

根據您的說明更新了查詢。這會向您顯示不止一次在同一組中的用戶,以及此類用戶的計數。 – 2014-10-30 20:56:23

+1

邏輯是正確的,但你不需要子查詢來應用where子句,而是使用HAVING(請參閱我的建議編輯) – Gervs 2014-10-30 21:11:00

1

以下內容應該適合您。它顯示重複記錄的ida

編輯:使用連續的having-count語句內的鍵。

SELECT concat(concat('Group is: ',group_id) , 
concat(' user id : ' , user_id)) Places 
FROM table 
HAVING count(concat(group_id,concat (':',user_id))) > 1 
+0

對不起,這並沒有給我正確的結果。請看我編輯的問題。 – veelen 2014-10-30 19:21:06

+0

@veelen更改having-count語句中的關鍵組合來指定重複的鍵。讓我知道我從手機上寫下來的結果。 – 2014-10-30 19:34:32

+0

這樣,我得到了和以前一樣的結果;只有一個用戶不在一個組中的結果不止一次。 – veelen 2014-10-30 19:35:47