討論區快速選單
知識庫快速選單
軟體開發過程中有哪些資安漏洞? 政府補助!學嵌入式+物聯網
[ 回上頁 ] [ 討論區發言規則 ]
關於刪除重複資料並保留最後一筆
更改我的閱讀文章字型大小
作者 : drjay129(阿茂)
[ 貼文 29 | 人氣 4145 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/10/25 下午 02:17:31
各位先進大家好∼小弟想請教一個問題

題目:
請寫出SQL statement:
刪除同一個人重複新增的資料,僅保留最後的一筆。
狀況說明:畢業生利用圖書館的"碩博士論文管理系統"上傳自己的論文,但因為操作問題,所以,常常有學生不小心按了好幾次上傳鍵,身為此系統的管理人員,該如何利用SQL statement來處理此狀況呢?


感謝各位的協助∼
作者 : light673(吳馨琳) VB.Net頂尖高手貼文超過500則
[ 貼文 603 | 人氣 1480 | 評價 3860 | 評價/貼文 6.4 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/10/26 下午 12:01:22
:::是一整筆都重覆才要刪,還是部份欄位資料重覆也要刪???
作者 : drjay129(阿茂)
[ 貼文 29 | 人氣 4145 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/10/26 下午 03:42:21
您好~

首先,謝謝您願意幫我解答問題

假設資料庫欄位總共有三個,分別為:username thesis_name date

目前的資料庫狀態,如下所示:
username thesis_name date
Jack abc 2008/10/10
Jack abc 2008/10/13
Jack abc 2008/10/23


執行SQL statement後,希望看到結果是:
username thesis_name date
Jack abc 2008/10/23


↑刪除舊的資料,只剩最新的一筆↑

作者 : light673(吳馨琳) VB.Net頂尖高手貼文超過500則
[ 貼文 603 | 人氣 1480 | 評價 3860 | 評價/貼文 6.4 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人drjay129註記此篇回應為最佳解答 2008/10/26 下午 09:42:17
:::
create table #abc
(
username nvarchar(10),
thesis_name nvarchar(10),
date datetime
)
insert into #abc values (Jack,abc,2008/10/10)
insert into #abc values (Jack,abc,2008/10/13)
insert into #abc values (Jack,abc,2008/10/23)

select username,thesis_name,max(date) from #abc
group by username,thesis_name
作者 : drjay129(阿茂)
[ 貼文 29 | 人氣 4145 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/10/27 上午 11:31:54
謝謝您~
作者 : a802216(小張)
[ 貼文 15 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/6/22 上午 10:59:48
我是使用SQL Server 2005,僅供您參考,希望能對您有助益

--建立資料表
create table #cc
(username varchar(4),
  thesis_name varchar(3),
  [date] datetime)

--插入三筆重覆資料(日期不重覆)
  insert into #cc
  values ('Jack','abc','2008/10/10')
    insert into #cc
  values
  ('Jack','abc','2008/10/13')
    insert into #cc
  values
  ('Jack','abc','2008/10/23')
   
--將重覆資料放入重覆資料表#aa
  Select username,thesis_name,row_number() over(order by username) as id
  into #aa
   From #cc
  group by username,thesis_name
  having count(*)>1

--變數宣告
  declare @id int
  set @id=1
  declare @max int --重覆資料共有幾筆
  Select @max=count(*) From #aa
  declare @un varchar(4) --存放username
  declare @thn varchar(3) --存放thesis_name
  declare @mdate datetime --存放最大的日期
  
  --僅保留日期最大,其餘重覆資料都刪除
 while @id<=@max
  begin
Select @un=username,@thn=thesis_name From #aa Where id=@id
Select @mdate=max([date]) from #cc Where username=@un and thesis_name=@thn

Delete From #cc
Where username=@un and thesis_name=@thn and [date]<>@mdate

set @id=@id+1
  end

--檢視成果
Select * From #cc
作者 : a802216(小張)
[ 貼文 15 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/6/22 上午 11:00:16
我是使用SQL Server 2005,僅供您參考,希望能對您有助益

--建立資料表
create table #cc
(username varchar(4),
  thesis_name varchar(3),
  [date] datetime)

--插入三筆重覆資料(日期不重覆)
  insert into #cc
  values ('Jack','abc','2008/10/10')
    insert into #cc
  values
  ('Jack','abc','2008/10/13')
    insert into #cc
  values
  ('Jack','abc','2008/10/23')
   
--將重覆資料放入重覆資料表#aa
  Select username,thesis_name,row_number() over(order by username) as id
  into #aa
   From #cc
  group by username,thesis_name
  having count(*)>1

--變數宣告
  declare @id int
  set @id=1
  declare @max int --重覆資料共有幾筆
  Select @max=count(*) From #aa
  declare @un varchar(4) --存放username
  declare @thn varchar(3) --存放thesis_name
  declare @mdate datetime --存放最大的日期
  
  --僅保留日期最大,其餘重覆資料都刪除
 while @id<=@max
  begin
Select @un=username,@thn=thesis_name From #aa Where id=@id
Select @mdate=max([date]) from #cc Where username=@un and thesis_name=@thn

Delete From #cc
Where username=@un and thesis_name=@thn and [date]<>@mdate

set @id=@id+1
  end

--檢視成果
Select * From #cc
 板主 : AXNET
 > SQL Language - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - SQL Language - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
SQL Language
1 ㄉ一ˊㄎㄜˋ 1330 
2 路人 1270 
3 坤哥 700 
4 吳馨琳 460 
5 凡人 440 
6 老骨頭 390 
7 pome5 380 
8 BK. 330 
9 Tony 310 
10 HKLN.net 250 
SQL Language
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.046875