如何在SQL中去重并保留单个ID(相同文本值仅取一个ID)

发布时间 - 2025-12-30 00:00:00    点击率:

当数据库中存在相同描述但不同id的重复记录时,可通过group by配合聚合函数(如min或max)选取每个文本对应的唯一id,避免combobox显示重复项。

在构建下拉选择框(ComboBox)的数据源时,若原始表 engine 中存在多条 description 相同但 id 不同的记录(例如:ID=101/“Engine A”、ID=205/“Engine A”),直接使用 SELECT DISTINCT id, description 无法真正去重——因为 DISTINCT 是对整行生效的,而 id 不同即视为不同行,结果仍会返回全部重复文本。

✅ 正确做法是按文本内容分组,每组只保留一个代表性ID。推荐使用 GROUP BY description 配合聚合函数:

SELECT MIN(id) AS id, description AS text 
FROM engine 
WHERE description IS NOT NULL 
GROUP BY description;

该语句将:

  • 过滤掉空描述(WHERE description IS NOT NULL);
  • 按 description 分组,确保每个唯一文本仅出现一次;
  • 使用 MIN(id) 取每组中最小的ID(也可替换为 MAX(id),依业务需求而定);
  • 别名 id 和 text 完美匹配你现有映射配置(如 MappingResource.properties 中期望的字段名)。

⚠️ 注意事项:

  • 确保 description 字段已建立索引(尤其数据量大时),以提升 GROUP BY 性能;
  • 若需保留“最新插入”的记录,且表中有时间戳字段(如 created_at),可改用窗口函数实现更精准控制(如 ROW_NUMBER() OVER (PARTITION BY description ORDER BY created_at DESC)),但当前场景中 MIN/MAX(id) 简洁高效;
  • 在应用层(如Java/Swing)绑定ComboBox前,务必验证SQL结果无NULL text,防止UI渲染异常。

此方案无需修改原有SQL生成逻辑,只需调整 MappingResource.properties 中对应查询语句即可平滑集成,兼顾正确性与可维护性。


# java  # app  # win  # 聚合函数 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在腾讯云服务器上快速搭建个人网站?  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  黑客如何通过漏洞一步步攻陷网站服务器?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  三星、SK海力士获美批准:可向中国出口芯片制造设备  创业网站制作流程,创业网站可靠吗?  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  如何在IIS中配置站点IP、端口及主机头?  如何在云服务器上快速搭建个人网站?  如何在万网主机上快速搭建网站?  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  利用vue写todolist单页应用  php json中文编码为null的解决办法  如何在Windows服务器上快速搭建网站?  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  微信公众帐号开发教程之图文消息全攻略  如何在云主机上快速搭建多站点网站?  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  Laravel如何使用模型观察者?(Observer代码示例)  Laravel如何发送系统通知?(Notification渠道示例)  如何挑选最适合建站的高性能VPS主机?  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  BootStrap整体框架之基础布局组件  无锡营销型网站制作公司,无锡网选车牌流程?  Laravel如何自定义分页视图?(Pagination示例)  JavaScript数据类型有哪些_如何准确判断一个变量的类型  LinuxCD持续部署教程_自动发布与回滚机制  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  如何快速搭建虚拟主机网站?新手必看指南  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  jquery插件bootstrapValidator表单验证详解  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  如何在阿里云域名上完成建站全流程?  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  如何获取上海专业网站定制建站电话?  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  Laravel如何自定义错误页面(404, 500)?(代码示例)  如何在阿里云香港服务器快速搭建网站?  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  如何在阿里云虚拟主机上快速搭建个人网站?  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  香港服务器如何优化才能显著提升网站加载速度?  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解