update,delete與INNER JOIN 以及刪除重複資料
一、原來只知道update是可以有inner join 的,前幾天搞到一個相關東西的時候才知道原來delete也是有inner join 的.現將兩種相關的語法陳列如下,有需要的朋友可以瞄瞄,嘻~~~~~
SQL:
UPDATE
update a
set a.employeestrid=b.pressworkid
from cemployee a inner join ccard b on a.cardid=b.cardid --其實這個大多都知道的,呵~在這裡囉嗦了點,嘻嘻~~~
DELETE
Delete from econsumedata from econsumedata inner join ccard on econsumedata.cardid=ccard.cardid
我們再講一下刪除重複資料的事情,呵~~~其實刪除重複資料我一般就使用兩種模式。
1、 要最簡單,就是先把不重複的查詢出來,將不重複的資料先存到臨時表裡,再將正式表的資料全部刪除掉,再使用select insert進行資料的插入,當然這我們情況只適用於資料可以停止下來。
2、 我們經常使用的資料庫可能需要你長時間的都在運營,所以前面那種方法就不再可行了,那就需要你直接執行SQL語句,對實際情況進行分析後進行刪除,一般我們遇到的重複資料都是大多欄位一樣,總會有一個欄們不一樣這樣的重複資料,請找到這個不一樣的欄位,作為一個標誌物,再進行利用完成刪除重複資料的工作。
E.G.
select deviceid,recordid,cardid,cardvalue,usecount,consumemoney,count(cardid) as card,max(consumedate) as data into #temp1 from econsumedata
where convert(char(10),consumedate,21) between '2006-01-01' and '2007-12-31'
group by deviceid,recordid,cardid,cardvalue,usecount,consumemoney
having count(cardid)>1
order by cardid,usecount --將相應的不重複的資料查詢出來,這裡因為其標誌本欄位是時間,所以我取了這些重複資料中擁有最大時間的一筆作為正確的資料查詢出來放到臨時表。
go
delete A from econsumedata A
inner join #temp1 B on A.deviceid=B.deviceid and A.recordid=B.recordid
and A.cardid=B.cardid and A.cardvalue=B.cardvalue and A.usecount=B.usecount
and A.consumemoney=B.consumemoney and A.consumedate<>B.data
--(最後的此條件,如若改成=則表示的是留下來的是這個臨時表的那一筆資料,可實現巧妙轉換)
--利用臨時表進行以前我們前面所講到的delete inner join (刪除時利用表間關聯)來完成刪除重複資料的功能.
go
drop table #temp1
原文地址: http://www.cnblogs.com/medci/archive/2009/10/19/1586115.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-617201/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Sqlserver update\delete用inner join關聯,會update\delete關鍵字後面的表關聯到的行SQLServerdelete
- 刪除重複資料
- mongodb刪除重複資料MongoDB
- sqlserver中刪除重複資料SQLServer
- PostgreSQL刪除表中重複資料SQL
- 解析postgresql 刪除重複資料案例SQL
- MS SQL Server 刪除重複行資料SQLServer
- mysql 刪除表中重複的資料MySql
- excel刪除重複資料保留一條 如何刪掉重複資料只留一條Excel
- Oracle中刪除表中的重複資料Oracle
- ORACLE批量刪除無主鍵重複資料Oracle
- 事件溯源投影模式:重複資料刪除策略 - domaincentric事件模式AI
- 使用Java Stream API中DistinctBy刪除重複資料JavaAPI
- MySQL LEFT JOIN/ INNER JOIN/RIGHT JOINMySql
- 刪除oracle重複值Oracle
- mysql 刪除重複項MySql
- JavaScript 刪除重複字元JavaScript字元
- 單表的更新UPDATE和刪除記錄DELETE(二十六)delete
- mysql left join轉inner joinMySql
- 【常用方法推薦】如何刪除MySQL的重複資料?MySql
- Mysql資料庫delete刪除後資料恢復報告MySql資料庫delete資料恢復
- Inner join 寫法
- mysql的left join和inner join的效率對比,以及如何優化MySql優化
- oracle刪除重資料方法Oracle
- JavaScript 刪除字串重複字元JavaScript字串字元
- VSCode刪除重複的空行VSCode
- MySQL防止delete命令刪除資料的兩種方法MySqldelete
- join、inner join、left join、right join、outer join的區別
- MySQL資料災難挽救之Delete\UpdateMySqldelete
- 刪除重複id的記錄
- JavaScript 刪除陣列重複元素JavaScript陣列
- Remove Duplicate Letters 刪除重複元素REM
- JavaScript陣列刪除重複元素JavaScript陣列
- JavaScript刪除字串中重複字元JavaScript字串字元
- 利用insert,update和delete注入獲取資料delete
- 什麼?還在用delete刪除資料《死磕MySQL系列 九》deleteMySql
- JavaScript陣列刪除重複內容JavaScript陣列
- PostgreSQL/GreenPlum Merge Inner Join解密SQL解密
- Hive學習筆記 ---- 支援Update和Delete以及MergeHive筆記delete