使用DISTINCT可去除完全重复的行或对特定字段去重,如SELECT DISTINCT * FROM table_name;而GROUP BY适用于结合聚合函数的场景,如按用户名分组取最大创建时间,且建议为相关字段建立索引以提升性能。

在 MySQL 中查询不重复的行内容,通常是指去除结果集中的重复记录。可以通过 DISTINCT 或 GROUP BY 实现,具体方法取决于你的需求。
使用 DISTINCT 去除完全重复的行
如果你希望返回所有字段组合中不重复的完整行,使用 DISTINCT 最直接。语法示例:
SELECT DISTINCT * FROM table_name;这会返回表中所有字段组合唯一的行。例如,如果某两行所有字段值都相同,只保留一行。
对特定字段去重
如果只想根据某些列的值去重,比如查“不同的用户名”或“不同的地区”,可以在 SELECT 后指定字段。示例:
JTBC CMS(5.0) 是一款基于PHP和MySQL的内容管理系统原生全栈开发框架,开源协议为AGPLv3,没有任何附加条款。系统可以通过命令行一键安装,源码方面不基于任何第三方框架,不使用任何脚手架,仅依赖一些常见的第三方类库如图表组件等,您只需要了解最基本的前端知识就能很敏捷的进行二次开发,同时我们对于常见的前端功能做了Web Component方式的封装,即便是您仅了解HTML/CSS也
SELECT DISTINCT username FROM users;这将返回 users 表中所有不重复的用户名。
使用 GROUP BY 实现更灵活的去重
当你需要结合聚合函数(如 COUNT、MAX)或保留某条记录的其他信息时,GROUP BY 更适合。示例:获取每个用户的最新一条记录
SELECT username, MAX(create_time) FROM users GROUP BY username;这样按用户名分组,取每组时间最大的那条。若要获取整行数据,可能需嵌套查询或使用窗口函数(MySQL 8.0+)。
注意事项
- DISTINCT 作用于整行或多个字段组合,注意字段顺序和 NULL 值处理
- 去重操作可能影响性能,尤其在大数据量表上,建议对相关字段建立索引
- 如果只是统计不重复数量,可用:SELECT COUNT(DISTINCT column) FROM table
基本上就这些,根据实际场景选择合适方式即可。









