Mysql 检索表中的重复项并显示它们
我得到了下表,其中如果超过1行包含相同的“用户徽章名称”和“用户电子邮件”,则视为重复Mysql 检索表中的重复项并显示它们,mysql,Mysql,我得到了下表,其中如果超过1行包含相同的“用户徽章名称”和“用户电子邮件”,则视为重复 user_id | user_name | user_badge_name | user_email -------------------------------------------------- 234 | Kylie | ky001 | kylie@test.com 235 | Francois | FR007 | france@te
user_id | user_name | user_badge_name | user_email
--------------------------------------------------
234 | Kylie | ky001 | kylie@test.com
235 | Francois | FR007 | france@test.com
236 | Maria | MA300 | Marie@test.com
237 | Francine | FR007 | france@test.com
我需要显示那些复制了“user\u badge\u name”和“user\u email”的行的user\u id和用户名
我尝试了以下sql,但它没有返回所有的用户id,只返回第一个id
SELECT user_id, username , COUNT(user_badge_name) AS user_badge_name_Count FROM user GROUP BY user_badge_name HAVING user_badge_name_Count > 1
如果您想在同一行中查看所有用户ID,请使用
组\u CONCAT
,我们非常感谢您的建议:
SELECT GROUP_CONCAT(user_id) AS user_ids, GROUP_CONCAT(username) AS usernames, COUNT(user_badge_name) AS user_badge_name_Count FROM user GROUP BY user_badge_name HAVING user_badge_name_Count > 1
这会给你类似的东西:
user_ids | usernames | user_badge_name_Count
-----------------------------------------------
235,237 | Francois,Francine | 2
如果要查看同一行中的所有用户ID,则可以使用
组\u CONCAT
:
SELECT GROUP_CONCAT(user_id) AS user_ids, GROUP_CONCAT(username) AS usernames, COUNT(user_badge_name) AS user_badge_name_Count FROM user GROUP BY user_badge_name HAVING user_badge_name_Count > 1
这会给你类似的东西:
user_ids | usernames | user_badge_name_Count
-----------------------------------------------
235,237 | Francois,Francine | 2
如果目标是防止重复条目,为什么表结构允许重复条目?如果将
user\u email
和user\u badge\u name
声明为唯一,则这些列中的重复项将永远不会出现问题。我使用的是已包含重复项的现有表。我只需要显示那些重复项如果目标是防止重复项,为什么表结构允许它们?如果将user\u email
和user\u badge\u name
声明为唯一,则这些列中的重复项将永远不会出现问题。我使用的是已包含重复项的现有表。我只需要显示那些重复的感谢“GROUP_CONCAT”建议感谢“GROUP_CONCAT”建议