日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

揭秘SQL Server中刪除重復(fù)數(shù)據(jù)的方法_Mssql數(shù)據(jù)庫(kù)教程

編輯Tag賺U幣
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

推薦:揭秘Sql語(yǔ)句優(yōu)化注意事項(xiàng)
1.盡量不要對(duì)列名進(jìn)行函數(shù)處理。而是針對(duì)后面的值進(jìn)行處理 例如where col1 = -5的效率比where -col1=5的效率要高 因?yàn)楹竺娴臈l件對(duì)列值進(jìn)行了計(jì)算。這樣的條件下優(yōu)化器無(wú)法使用索引 而是要針對(duì)所有值進(jìn)行計(jì)算之后才能再比較 2.盡量使用和數(shù)劇列一樣的值進(jìn)行

數(shù)據(jù)庫(kù)的使用過程中由于程序方面的問題有時(shí)候會(huì)碰到重復(fù)數(shù)據(jù),重復(fù)數(shù)據(jù)導(dǎo)致了數(shù)據(jù)庫(kù)部分設(shè)置不能正確設(shè)置……

方法一

以下為引用的內(nèi)容:

declare @max integer,@id integer
declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) > 1
open cur_rows
fetch cur_rows into @id,@max
while @@fetch_status=0
begin
select @max = @max -1
set rowcount @max
delete from 表名 where 主字段 = @id
fetch cur_rows into @id,@max
end
close cur_rows
set rowcount 0

方法二

有兩個(gè)意義上的重復(fù)記錄,一是完全重復(fù)的記錄,也即所有字段均重復(fù)的記錄,二是部分關(guān)鍵字段重復(fù)的記錄,比如Name字段重復(fù),而其他字段不一定重復(fù)或都重復(fù)可以忽略。

1、對(duì)于第一種重復(fù),比較容易解決,使用

以下為引用的內(nèi)容:

select distinct * from tableName

就可以得到無(wú)重復(fù)記錄的結(jié)果集。

如果該表需要?jiǎng)h除重復(fù)的記錄(重復(fù)記錄保留1條),可以按以下方法刪除

以下為引用的內(nèi)容:

select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp

發(fā)生這種重復(fù)的原因是表設(shè)計(jì)不周產(chǎn)生的,增加唯一索引列即可解決。

2、這類重復(fù)問題通常要求保留重復(fù)記錄中的第一條記錄,操作方法如下

假設(shè)有重復(fù)的字段為Name,Address,要求得到這兩個(gè)字段唯一的結(jié)果集

以下為引用的內(nèi)容:

select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)

最后一個(gè)select即得到了Name,Address不重復(fù)的結(jié)果集(但多了一個(gè)autoID字段,實(shí)際寫時(shí)可以寫在select子句中省去此列)查詢分析器不能單步調(diào)試的的原因

  具體步驟如下:

  1、將服務(wù)器【身份驗(yàn)證】屬性設(shè)置成【混合模式】(window與SQL身份驗(yàn)證)

  2、在【控制面板】中打開【服務(wù)】將【MS SQL Server】服務(wù)打開【屬性】,選擇【登錄】頁(yè)面,將登錄身份設(shè)置成服務(wù)器本地帳號(hào)和該帳號(hào)密碼,如administrator,密碼123;

  3、重新啟動(dòng)SQL Server服務(wù),此時(shí)的服務(wù)指的是【SQL服務(wù)管理器】中的SQL Server服務(wù);假設(shè)【帳號(hào)】設(shè)置為administrator 。此時(shí)達(dá)到的效果是:服務(wù)器本地帳號(hào)administrator與客戶端上的administrator(并且該帳號(hào)的密碼要與服務(wù)器密碼相同)可以通過【查詢分析器】進(jìn)行調(diào)試;如果想讓【其他帳號(hào)】也能夠調(diào)試,那么還需要如下設(shè)置:
  a、在【服務(wù)器】上運(yùn)行dcomcnfg.exe;

  b、在【默認(rèn)安全機(jī)制】中【默認(rèn)訪問權(quán)限】右邊點(diǎn)擊【編輯默認(rèn)值】選擇允許調(diào)試的帳號(hào)類型,如users用戶類型,sample帳號(hào)有包含users組;

  c、重新啟動(dòng)SQL Server服務(wù);

  3、在客戶端上創(chuàng)建與服務(wù)帳號(hào)密碼一樣的用戶,如sample;做到這步就可以通過查詢分析器的調(diào)試功能進(jìn)行單步調(diào)試了。
  注:第二步更改“啟動(dòng)服務(wù)帳戶”,在第一次登錄之前,必須更改用戶密碼。不然,event log:以當(dāng)前密碼登錄的嘗試因下列錯(cuò)誤而宣告失�。� 在第一次登錄之前,必須更改用戶密碼。

 

分享:解析J2EE中SQL語(yǔ)句自動(dòng)構(gòu)造方法
INSERT、DELETE、UPDATE 三種SQL語(yǔ)句是數(shù)據(jù)庫(kù)技術(shù)的三大基本語(yǔ)句. 在通常的web開發(fā)中對(duì)它的處理可以說是無(wú)處不在. 如果簡(jiǎn)單的都用手工來構(gòu)造這些SQL語(yǔ)句的話, 一方面給我們的開發(fā)帶來很大的工作量, 另一方面系統(tǒng)靈活性受到很大的限制. 那么能不能基于某種規(guī)

來源:模板無(wú)憂//所屬分類:Mssql數(shù)據(jù)庫(kù)教程/更新時(shí)間:2009-11-16
相關(guān)Mssql數(shù)據(jù)庫(kù)教程