mysql自聯(lián)去重的一些筆記記錄
我先把功能場景簡要闡述下:
數(shù)據(jù)行字段如下:
name
started_at
type
在這張表里,name有重復值
現(xiàn)在需要在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;
大家有什么更好的解決思路嗎?
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。
- 解析mysql中:單表distinct、多表group by查詢?nèi)コ貜陀涗?/a>
- mysql SELECT語句去除某個字段的重復信息
- MySQL 去除重復數(shù)據(jù)實例詳解
- 一條sql語句完成MySQL去重留一
- MySQL去重的方法整理
- mysql 開發(fā)技巧之JOIN 更新和數(shù)據(jù)查重/去重
- Mysql刪除重復的數(shù)據(jù) Mysql數(shù)據(jù)去重復
- mysql去重的兩種方法詳解及實例代碼
- MySQL數(shù)據(jù)表合并去重的簡單實現(xiàn)方法
- 將MySQL去重操作優(yōu)化到極致的操作方法
- mysql優(yōu)化小技巧之去除重復項實現(xiàn)方法分析【百萬級數(shù)據(jù)】
相關(guān)文章
MySQL中g(shù)roup by與max()一起使用的坑
最近在做一個項目,發(fā)現(xiàn)用之前SQL語句導出的余額與客戶人員最近消費記錄所顯示的余額不一致,本文就來了解一下這個錯誤,感興趣的可以了解一下2023-08-08在CMD中操作mysql數(shù)據(jù)庫出現(xiàn)中文亂碼解決方案
有說將cmd字符編碼用chcp命令改為65001(utf8字符編碼),可這樣之后根本無法輸入中文,查詢出的中問結(jié)果依舊亂碼 。下面小編給大家?guī)砹嗽贑MD中操作mysql數(shù)據(jù)庫出現(xiàn)中文亂碼解決方案,一起看看吧2017-09-09Mysql update多表聯(lián)合更新的方法小結(jié)
這篇文章主要介紹了Mysql update多表聯(lián)合更新的方法小結(jié),通過實例代碼給大家介紹了mysql多表關(guān)聯(lián)update的語句,感興趣的朋友跟隨小編一起看看吧2020-02-02