查詢重覆記錄

2021-06-16 00:58:20 字數 1800 閱讀 5670

ifexists(select*fromdbo.sysobjectswhereid=object_id(n'[dbo].[p_qry]')andobjectproperty(id,n'isprocedure')=1)

dropprocedure[dbo].[p_qry]

go/*--

查詢重覆記錄的通用儲存過程

可以查詢出表中那些資料是重複的,這裡的重複,是指除主鍵外重複的記錄

如果表中有主鍵,請指定主鍵.

如果表中有標識字段,而且標識欄位無重複,請在呼叫時,將主鍵指定為標識字段

如果標識字段重複,不能用此儲存過程

--2004.4--*/

createprocp_qry

@tbnamesysname, --要查詢的表名

@keyfdnamesysname=null--表中的主鍵,如果未指定,則表中無主鍵

asdeclare@nokeybit,@fdvarchar(8000),@tjvarchar(8000)

setnocounton

ifisnull(@keyfdname,'')=''

begin

select@keyfdname=cast(newid()aschar(36)),@nokey=1

exec('altertable['+@tbname+']add['+@keyfdname+']decimal(38,0)identity(1,1)')

endselect@fd='',@tj=''

select@fd=@fd+',['+name+']'

,@tj=@tj+'['+name+']=a.['+name+']and'

fromsyscolumns

whereobject_name(id)=@tbnameandname<>@keyfdname

set@fd=substring(@fd,2,8000)

exec('select'+@fd+'from['+@tbname+']a

whereexists(select1from['+@tbname

+']wherea.['+@keyfdname+'])'">'+@tj+'['+@keyfdname+']<>a.['+@keyfdname+'])')

if@nokey=1

exec('altertable['+@tbname+']dropcolumn['+@keyfdname+']')

setnocountoff

go--呼叫示例

--建立測試資料

createtable表(f1int,f2int,f3int,f4int,f5int)

insertinto表

select1,1,1,1,1

unionallselect2,1,1,1,1

unionallselect3,2,1,23,1

unionallselect4,2,3,1,3

unionallselect5,1,1,1,1

go--呼叫通用儲存過程實現樓主的查詢

execp_qry'表','f1'

--刪除測試環境

droptable表

/*--測試結果

f2         f3         f4         f5         

--------------------------------------------

1          1          1          1

1          1          1          1

1          1          1          1

--*/

SQL查詢重覆記錄,刪除重覆記錄

1 查詢表中多餘的重覆記錄,重覆記錄是根據單個字段 docid 來判斷 select from tablename where docid in select docid from tablename group by docid h ing count docid 1 例二 select from...

Oracle SQL查詢刪除重覆記錄

oracle sql查詢刪除重覆記錄有兩種方式一種是建立乙個臨時表,就不做說明了.另一種是用oracle的rowid來刪除 create table student name varchar 12 姓名 varchar2 2 性別 表已建立.sql insert into student value...

sql 重覆記錄和重覆記錄數

如果table1有兩個column adress和pepole,那麼下面的sql可以找出table1裡的重覆記錄和重覆記錄數 create table table1 adress nvarchar 10 pepole nvarchar 10 insert table1 select 寧波 張三 nb...