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 ;

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

相关推荐
stark张宇10 小时前
MySQL 核心内幕:从索引原理、字段选型到日志机制与外键约束,一篇打通数据库任督二脉
数据库·mysql·架构
倔强的石头_10 小时前
融合数据库架构实践:关系型、JSON与全文检索的“一库多能”深度解析
数据库
奔跑中的蜗牛66610 小时前
一次播放器架构升级:Android 直播间 ANR 下降 60%
android
星辰员12 小时前
KingbaseES数据库:ksql 命令行用户与权限全攻略,从创建到删除
数据库
测试工坊12 小时前
Android 视频播放卡顿检测——帧率之外的第二战场
android
Kapaseker14 小时前
一杯美式深入理解 data class
android·kotlin
鹏多多14 小时前
Flutter使用screenshot进行截屏和截长图以及分享保存的全流程指南
android·前端·flutter
Carson带你学Android14 小时前
OpenClaw移动端要来了?Android官宣AI原生支持App Functions
android
黄林晴14 小时前
Android 删了 XML 预览,现在你必须学 Compose 了
android
三少爷的鞋14 小时前
Android 面试系列 | 内存泄露:从"手动配对"到"架构自愈"
android