You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL中查询info表指定关键词的去重name记录?

解决info表中name字段指定关键词去重显示的问题

没问题,我来帮你搞定这个需求!根据你说的情况,分两种场景给你对应的解决方案:

场景1:仅匹配完全一致的"alex and michel"

如果这10条记录里的name字段是完全一模一样的字符串(没有大小写、空格这类差异),那直接用DISTINCT或者GROUP BY就能轻松去重,只返回一次结果:

方法1:使用DISTINCT

SELECT DISTINCT name FROM info WHERE name = 'alex and michel';

DISTINCT关键字会自动过滤掉重复的行,只保留唯一的name值。

方法2:使用GROUP BY

SELECT name FROM info WHERE name = 'alex and michel' GROUP BY name;

通过GROUP BY name按name字段分组,每组只会返回一条记录,同样能达到去重效果。

场景2:匹配格式不同的"alex and michel"

如果这10条记录的name是格式不同的同内容(比如大小写不同:Alex And Michel,或者空格冗余:alex and michel),那需要先把字符串标准化,再去重筛选:

以MySQL为例(处理大小写和多余空格)

SELECT DISTINCT 
  LOWER(TRIM(REPLACE(name, '  ', ' '))) AS standardized_name 
FROM info 
WHERE LOWER(TRIM(REPLACE(name, '  ', ' '))) = 'alex and michel';

这里用LOWER()把所有字符转小写,TRIM()去掉首尾空格,REPLACE()把多个连续空格替换成单个空格,先统一格式,再筛选匹配的内容并去重。

以PostgreSQL为例(处理任意数量的多余空格)

SELECT DISTINCT 
  LOWER(REGEXP_REPLACE(name, '\s+', ' ', 'g')) AS standardized_name 
FROM info 
WHERE LOWER(REGEXP_REPLACE(name, '\s+', ' ', 'g')) = 'alex and michel';

用REGEXP_REPLACE()配合正则\s+可以一次性把任意多个连续空格替换成单个,处理起来更灵活。

这样不管原来的记录格式怎么变,只要核心内容是"alex and michel",最终都会只显示一次标准化后的结果。

内容的提问来源于stack exchange,提问作者Simoow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:07:27