mysql自联去重的一些笔记记录
短信预约 -IT技能 免费直播动态提醒
我先把功能场景简要阐述下:
数据行字段如下:
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<s1.started_at and s2.started_at > now()
最后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;
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
mysql自联去重的一些笔记记录
下载Word文档到电脑,方便收藏和打印~
下载Word文档
猜你喜欢
2024-04-02
2024-04-02
2023-09-27
2024-04-02
2024-04-02
2024-04-02
2024-04-02
2024-04-02
如何解决MySQL报错:唯一键约束中的重复记录
当MySQL报错唯一键约束中的重复记录时,可以采取以下几种方法来解决问题:1. 删除重复记录:通过执行DELETE语句来删除重复的记录。例如,可以使用以下语句删除重复记录:```sqlDELETE FROM table_name WHERE
2023-10-12
mysql删除重复记录并且只保留一条的实现方法
准备的测试表结构及数据插入的数据中A,B,E存在重复数据,C没有重复记录CREATE TABLE `tab` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(20) DEFAUL
2023-01-04
Duplicate entry 'value' for key 'unique_key_constraint' - 如何解决MySQL报错:唯一键约束中的重复记录
在使用MySQL数据库时,我们经常会遇到一种错误,即报错:"Duplicate entry 'value' for key 'unique_key_constraint'"。这个错误通常是由于在插入或更新数据时,违反了唯一键约束,导致数据库
2023-10-21