需求:有一個聊天記錄表,如下
id from to message timeline
1 a h xxxxxxxx 10:24:35
2 c h xxxxxxxx 10:26:20
3 h a xxxxxxxx 10:30:56
4 c h xxxxxxxx 10:32:27
5 a h xxxxxxxx 10:35:25
6 h c xxxxxxxx 10:42:45
7 h b xxxxxxxx 10:45:32
我現在只知道h,我想查出來 每個人 和 h 聊天的最后兩條記錄,應該怎么寫查詢陳述句。
uj5u.com熱心網友回復:
這種情況很多地方都遇到過,有時候總想偷懶一個陳述句想搞定。。。但有個比較麻煩的方法,雖然麻煩,但思路清晰,寫個proc,
cursor=select ... from group by from,to order by timeline
while()
if cursor.from 同一個from已經出現兩次,就這行記錄不處理,但前兩條記錄要保存下來。此處省略邏輯部分,只講思路
cursor.next()
uj5u.com熱心網友回復:
能夠單條陳述句搞定確實顯示sql的功底,但是不是所有問題都有必要一條陳述句搞定的。寫起來難,維護也難。
uj5u.com熱心網友回復:
參考 六、按name分組取最大的兩個(N個)valSELECT
X.*
FROM
TB X
WHERE
2 > (SELECT
COUNT(*)
FROM
TB
WHERE
TB.from = X.from AND TB.to = X.to
AND timeline > X.timeline)
ORDER BY X.fro , timeline;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/93811.html
標籤:MySQL
上一篇:阿里云mongodb匯出的資料檔案怎么匯入到windows系統的mongodb中?
下一篇:springboot啟動錯誤
