我先把功能場景簡要闡述下:
數(shù)據(jù)行字段如下:
name
started_at
type
在這張表里,name有重復(fù)值
現(xiàn)在需要在type確定的情況下,篩選出一個列表,滿足,name不重復(fù),找出的記錄為同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
那篩的列表應(yīng)為:
活動1 2019-06-01 type1
活動2 2019-06-03 type1
還需要滿足started_at 大于 當前時間
請問這樣的sql應(yīng)該如何寫?
解決思路為:
就是利用left join 自己
比如s1 left join s2 on s1.name=s2.name and s2.started_ats1.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)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。
您可能感興趣的文章:- 解析mysql中:單表distinct、多表group by查詢?nèi)コ貜?fù)記錄
- mysql SELECT語句去除某個字段的重復(fù)信息
- MySQL 去除重復(fù)數(shù)據(jù)實例詳解
- 一條sql語句完成MySQL去重留一
- MySQL去重的方法整理
- mysql 開發(fā)技巧之JOIN 更新和數(shù)據(jù)查重/去重
- Mysql刪除重復(fù)的數(shù)據(jù) Mysql數(shù)據(jù)去重復(fù)
- mysql去重的兩種方法詳解及實例代碼
- MySQL數(shù)據(jù)表合并去重的簡單實現(xiàn)方法
- 將MySQL去重操作優(yōu)化到極致的操作方法
- mysql優(yōu)化小技巧之去除重復(fù)項實現(xiàn)方法分析【百萬級數(shù)據(jù)】