我有一個表tbl_user
,我想找到哪個user_name
(s)在表中具有最重複的值。我只想要檢索那些user_id
(s)。如何從表中找到最重要的元素?
我還需要一個單獨的查詢來查找表中重複user_name
(s)的計數。
我有一個表tbl_user
,我想找到哪個user_name
(s)在表中具有最重複的值。我只想要檢索那些user_id
(s)。如何從表中找到最重要的元素?
我還需要一個單獨的查詢來查找表中重複user_name
(s)的計數。
要查找重複的次數:
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)
SELECT COUNT(*) FROM tbl_user
GROUP BY tbl_user.user_name
會給你重複user_name
S的數量。如果你喜歡,你可以使用腳本語言來選擇最高的一個,或者如果它不是你需要自動化的東西,就查看清單。
如果你的意思是你想計算一個特定用戶名的出現次數,這樣的事情可能適合你。
select user_name,user_id,count(*) as mycount from tbl_user group by user_name order by mycount desc limit 5
這應該得到的前5項
首先查詢找到重複的用戶名的最大金額:
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
)
您可以選擇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
)