台灣最大程式設計社群網站
線上人數
1168
 
會員總數:241117
討論主題:186792
歡迎您免費加入會員
討論區列表 >> MySQL >> 重覆資料只留下最新一筆
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
重覆資料只留下最新一筆
價值 : 10 QP  點閱數:154 回應數:3

樓主

bermuda
門外漢
0 1
4 0
發送站內信

假設我有三筆資料如下

Table name: QQQQQ

ID Time Data
---------------------------------
AA 2017/09/15 10:00:00 15
BB 2017/09/15 10:00:01 16
AA 2017/09/15 10:00:02 14

我要怎麼查詢可以得到每一個ID只有一筆最新的資料, 如下
ID Time Data
---------------------------------
BB 2017/09/15 10:00:01 16
AA 2017/09/15 10:00:02 14


有用過以下的語法, 但是資料量大的時候會當機
Select * From (
select * , if (@pdept=SourceData.ID,@SeqNo:=@SeqNo+1,@SeqNo:=1) As DataNumber, @pdept:=SourceData.ID From(
select * from QQQQQ order by Time desc
) SourceData, (Select @pdept:=Null, @SeqNo:=0) CheckData
) Result Where DataNumber=1 order by ID

請問有別的更好的語法嗎???

搜尋相關Tags的文章: [ 重覆資料 ] , [ 只留下最新一筆 ] , [ sort ] ,
本篇文章發表於2017-09-15 14:37
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

迷路
捐贈 VP 給 迷路 檢舉此回應
試試看

本篇文章回覆於2017-09-15 15:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
@迷路

你這樣子做不正確喔。這樣只是抓到最新的日期,不一定是最新的資料。


以下的做法給你參考

如果資料量比較大時。最好能給個條件處理,條件放在中間的子查尋內。降低取出來的量後再做group
本篇文章回覆於2017-09-18 10:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

迷路
捐贈 VP 給 迷路 檢舉此回應
因為沒看到有相關的欄位可供排序啊
別說時間了,就連流水號主鍵都沒有
本篇文章回覆於2017-09-18 17:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.