您现在的位置是:网站首页> 编程资料编程资料
mysql自联去重的一些笔记记录_Mysql_
2023-05-27
437人已围观
简介 mysql自联去重的一些笔记记录_Mysql_
我先把功能场景简要阐述下:
数据行字段如下:
name
started_at
type
在这张表里,name有重复值
现在需要在type确定的情况下,筛选出一个列表,满足,name不重复,找出的记录为同name下started_at为最小的记录
举个例子:
活动1 2019-06-01 type1
活动1 2019-06-02 type1
活动1 2019-06-03 type1活动2 2019-06-03 type1
活动2 2019-06-05 type1
活动2 2019-06-07 type1
那筛的列表应为:
活动1 2019-06-01 type1
活动2 2019-06-03 type1
还需要满足started_at 大于 当前时间
请问这样的sql应该如何写?
解决思路为:
就是利用left join 自己
比如s1 left join s2 on s1.name=s2.name and s2.started_at
最后where s2.id is null
SELECT s1.NAME, s1.started_at, FROM tbl s1 LEFT JOIN tbl s2 ON s1.`name` = s2.`name` AND s1.started_at > s2.started_at AND s2.started_at > now( ) WHERE s2.id IS NULL AND s1.started_at > now( ) AND s1.type = 'online_lecture' ORDER BY s1.NAME, s1.started_at;
大家有什么更好的解决思路吗?
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
您可能感兴趣的文章:
相关内容
- mysql建立高效的索引实例分析_Mysql_
- mysql重复索引与冗余索引实例分析_Mysql_
- mysql索引覆盖实例分析_Mysql_
- mysql索引对排序的影响实例分析_Mysql_
- MySQL DISTINCT 的基本实现原理详解_Mysql_
- MySql 8.0.16版本安装提示已经不使用“UTF8B3”而是使用“UTF8B4”问题_Mysql_
- mysql 8.0.16 winx64及Linux修改root用户密码 的方法_Mysql_
- Mysql解决数据库N+1查询问题_Mysql_
- MySQL全文索引实现简单版搜索引擎实例代码_Mysql_
- MYSQL事务教程之Yii2.0商户提现功能_Mysql_
