我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL如何实现连表查询分组去重

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL如何实现连表查询分组去重

这篇文章主要介绍MySQL如何实现连表查询分组去重,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

业务逻辑

通过多种渠道将小程序的活动页链接发布出去,比如通过多多种短信附带链接( channel 就记为 sms1,sms2,sms3 ),或者海报上面贴微信小程序的二维码( channel 记为 qrcode1,qrcode2,qrcode3 ),线下会员通过扫描二维码也能进入小程序指定的活动页,亦或者是通过其他会员分享的小程序链接也可以进入小程序( channel 记为 share)。这些不同的进入方式在我这篇文章统称为不同的渠道,也就是提到的 channel 字段。从不同的渠道进入活动页就会产生一条页面访问记录。会被计入 page_view 这张表里。

会员进入小程序的指定活动页后,在页面上面触发一系列操作后,会得到相应的反馈,比如获得积分,或者获得优惠券等等。这步操作称为参与活动。这条数据会被记入 activity_record 这张表里。

现在呢,运营小姐姐要求得到一份数据报表。每位参与活动的会员是从什么时间,哪个渠道里面进活动的?

数据表结构

表名member_idparticipate_time
activity_record会员号活动参与时间
表名member_idchannelview_time
page_view会员号渠道页面访问时间

查询逻辑

因为每位会员只能参加一次活动,也就是活动期间只能获得过一次积分,或者领取过一次优惠券等等这种意思,也就是每位会员最多只会产生一条 activity_record 记录。

可是 page_view 这张表的记录方式就不一样了。会员可能既收到过短信链接,又扫描过活动二维码,又被好友分享过活动链接,这下,对于这位会员来说,就会产生多条页面访问记录,即在 page_view 里产生多条数据。

你想想,会员肯定是先通过某一个渠道进入到活动页面,才能去参加活动。也就是有多条 page_view 的数据,按照 view_time 倒序排列,总有一条的 view_time 是小于且最接近于 activity_record 的 participate_time,下一条 page_view 的 view_time 就会大于 activity_record 的 participate_time。

SQL脚本

select c.member_id,c.view_time,.channel from (SELECT member_id, SUBSTRING_INDEX( GROUP_CONCAT( view_time ORDER BY view_time DESC ), ',', 1 ) AS view_time, SUBSTRING_INDEX( GROUP_CONCAT( channel ORDER BY channel DESC ), ',', 1 ) AS channelFROM page_view a LEFT JOIN activity_record b        on a.member_id = b.member_id        where a.view_time < b.participate_timeGROUP BY member_id) c;

脚本说明

  • GROUP_CONCAT:通过使用distinct可以排除重复值; group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )

  • SUBSTRING_INDEX:字符串截取函数。substring_index(str,delim,count)。str:要处理的字符串;delim:分隔符;count:计数

以上是“MySQL如何实现连表查询分组去重”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL如何实现连表查询分组去重

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL如何实现连表查询分组去重

这篇文章主要介绍MySQL如何实现连表查询分组去重,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!业务逻辑通过多种渠道将小程序的活动页链接发布出去,比如通过多多种短信附带链接( channel 就记为 sms1,sms
2023-06-20

MySQL连表查询分组去重的实现示例

目录业务逻辑数据表结构查询逻辑SQL脚本脚本说明业务逻辑通过多种渠道将小程序的活动页链接发布出去,比如通过多多种短信附带链接( channel 就记为 sms1,sms2,sms3 ),或者海报上面贴微信小程序的二维码( channel 记
2022-05-24

如何用LambdaWrapper去实现去重查询

如何用LambdaWrapper去实现去重查询 我们知道,LambdaWrapper比较好用,但是LambdaWrapper却不能实现select(String s),那只需要进行QueryWrapper与LambdaQueryWrappe
2023-08-17

mysql字段去重查询怎么实现

要实现MySQL字段的去重查询,可以使用DISTINCT关键字。可以按照以下步骤进行操作:1. 使用SELECT语句查询需要去重的字段,例如:SELECT DISTINCT column_name FROM table_name;其中,co
2023-09-13

【MySQL】如何实现单表查询?

在我们对数据进行操作时,查询无疑是至关重要的,查询操作灵活多变,我们可以根据开发的需求,设计高效的查询操作,把数据库中存储的数据展示给用户。 文章目录 前言1. 基础查询1.1 基础查询语法1.2 基础查询练习 2. 条件查
2023-08-16

mysql分表后如何查询

mysql 分表后查询方法分表是将一张大表拆分成多个小表的一种技术,以提升数据库的性能和可伸缩性。查询分表数据的方法有以下几种:1. 使用联合查询(UNION)将每个分表的结果集通过 UNION 操作符联合起来,形成一个虚拟的表。
mysql分表后如何查询
2024-06-14

laravel如何实现模糊查询和去重操作

今天小编给大家分享一下laravel如何实现模糊查询和去重操作的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、模糊查询La
2023-07-05

MySQL如何查询重复记录并进行去重

可以使用以下方法来查询重复记录并进行去重:查询重复记录:SELECT column1, column2, COUNT(*)FROM table_nameGROUP BY column1, column2HAVING COUNT(*)
MySQL如何查询重复记录并进行去重
2024-03-06

MySQL如何进行分组查询

MySQL中可以使用GROUP BY关键字进行分组查询。具体的语法为:SELECT 列名1, 列名2, ...FROM 表名WHERE 条件GROUP BY 列名1, 列名2, ...HAVING 条件ORDER BY 列名1, 列名2,
2023-10-10

php如何实现数组去重

这篇文章主要介绍“php如何实现数组去重”,在日常操作中,相信很多人在php如何实现数组去重问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php如何实现数组去重”的疑惑有所帮助!接下来,请跟着小编一起来学习吧
2023-06-26

编程热搜

目录