mysql 通过GROUP BY 聚合并且拼接去重另个字段

我的需求:

我想知道同一个手机号出现几次,并且手机号出现在哪些地方。下面是要的效果。

源数据:

复制代码
CREATE TABLE `bank` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL DEFAULT '0',
  `tel` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `bank_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '银行卡名称',
  `bank_num` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '银行卡号',
  `is_show` int(11) NOT NULL DEFAULT '1' COMMENT '是否展示 1是 否',
  `creat_er` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '创建者',
  `created_at` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`) USING BTREE,
  KEY `user_id` (`user_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='银行卡'

解决:通过 GROUP_CONCAT( ) 函数和 DISTINCT 去重函数

SELECT tel,count(user_id)as n, GROUP_CONCAT( bank_name) FROM bank GROUP BY tel ;

没去重的时候后面就直接拼接了

加上去重函数

复制代码
SELECT  tel,count(user_id)as n, GROUP_CONCAT(DISTINCT bank_name)
    FROM bank GROUP BY tel ;

效果:在聚合的时候拼接,并去重得到想要的效果

相关推荐
heze095 小时前
sqli-labs-Less-18自动化注入方法
mysql·网络安全·自动化
2501_915909065 小时前
如何保护 iOS IPA 文件中资源与文件的安全,图片、JSON重命名
android·ios·小程序·uni-app·json·iphone·webview
木风小助理5 小时前
PostgreSQL基础知识——DDL深度解析
数据库·postgresql
hanqunfeng5 小时前
(四十四)Redis8 新增的数据类型 -- Vector Set
数据库·redis·缓存
梦梦代码精6 小时前
BuildingAI vs Dify vs 扣子:三大开源智能体平台架构风格对比
开发语言·前端·数据库·后端·架构·开源·推荐算法
Root_Hacker6 小时前
include文件包含个人笔记及c底层调试
android·linux·服务器·c语言·笔记·安全·php
stevenzqzq7 小时前
android flow的背压策略
android·flow
纪莫7 小时前
技术面:MySQL篇(InnoDB的锁机制)
java·数据库·java面试⑧股
Filotimo_8 小时前
在java开发中,cron表达式概念
java·开发语言·数据库
DBA小马哥8 小时前
从MongoDB迁移到金仓数据库:数据模型与业务连续性难题的保姆级指南
数据库·mongodb·dba