2011-07-26 44 views
3

我有一個表tbl_user,我想找到哪個user_name(s)在表中具有最重複的值。我只想要檢索那些user_id(s)。如何從表中找到最重要的元素?

我還需要一個單獨的查詢來查找表中重複user_name(s)的計數。

回答

0

要查找重複的次數:

SELECT count(id) AS num_duplicates FROM tbl_users GROUP BY user_name ORDER BY num_duplicates DESC 

要找到最複製USER_NAME的USER_ID的:

SELECT user_id FROM tbl_user 
    WHERE username IN (SELECT user_id 
          FROM tbl_users 
         GROUP BY user_name 
         ORDER BY count(id) DESC LIMIT 0, 1) 
0
SELECT COUNT(*) FROM tbl_user 
GROUP BY tbl_user.user_name 

會給你重複user_name S的數量。如果你喜歡,你可以使用腳本語言來選擇最高的一個,或者如果它不是你需要自動化的東西,就查看清單。

0

如果你的意思是你想計算一個特定用戶名的出現次數,這樣的事情可能適合你。

select user_name,user_id,count(*) as mycount from tbl_user group by user_name order by mycount desc limit 5

這應該得到的前5項

1

首先查詢找到重複的用戶名的最大金額:

SELECT user_name, COUNT(user_id) AS amount 
    FROM tbl_user 
GROUP BY user_name 
ORDER BY amount DESC 

再抓id`s:

# faster way using username from last query 

    SELECT user_id 
    FROM tbl_user 
    WHERE user_name = '$user_name' 


# longer way 

    SELECT user_id 
    FROM tbl_user 
    WHERE user_name = (
     SELECT user_name 
     FROM tbl_user 
    GROUP BY user_name 
    ORDER BY COUNT(amount) DESC 
     LIMIT 1 
    ) 
0

您可以選擇user_name s是重複這個SQL:

SELECT COUNT(1) AS duplicates, user_name 
FROM tbl_user 
GROUP BY user_name 
HAVING duplicates > 1 

已經做到了這一點,你就可以使用它作爲一個子查詢,找出重複的user_name小號

SELECT COUNT(1) AS count_of_user_names, SUM(duplicates) AS duplicate_records 
FROM (
    SELECT COUNT(1) AS duplicates, user_name 
    FROM tbl_user 
    GROUP BY user_name 
    HAVING duplicates > 1 
) AS subquery 

計數或用它來找出用戶ID :

SELECT user_id 
FROM tbl_user 
WHERE user_name IN (
    SELECT user_name 
    FROM tbl_user 
    GROUP BY user_name 
    HAVING COUNT(1) > 1 
) 
相關問題