博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
查询重复记录
阅读量:6436 次
发布时间:2019-06-23

本文共 1685 字,大约阅读时间需要 5 分钟。

None.gif
if
exists (
select
*
from dbo.sysobjects
where id
=
object_id(N
'
[dbo].[p_qry]
')
and
OBJECTPROPERTY(id, N
'
IsProcedure
')
=
1)
None.gif
drop
procedure
[
dbo
].
[
p_qry
]
None.gif
GO
None.gif
ExpandedBlockStart.gif
ContractedBlock.gif
/**/
/*
--查询重复记录的通用存储过程
InBlock.gif
InBlock.gif 可以查询出表中那些数据是重复的,这里的重复,是指除主键外重复的记录
InBlock.gif 如果表中有主键,请指定主键.
InBlock.gif 如果表中有标识字段,而且标识字段无重复,请在调用时,将主键指定为标识字段
InBlock.gif 如果标识字段重复,不能用此存储过程
InBlock.gif
ExpandedBlockEnd.gif-- 2004.4--
*/
None.gif
None.gif
create
proc p_qry
None.gif
@tbname sysname,
--
要查询的表名
None.gif
@keyfdname sysname
=
null
--
表中的主键,如果未指定,则表中无主键
None.gif
as
None.gif
declare
@nokey
bit,
@fd
varchar(
8000),
@tj
varchar(
8000)
None.gif
set nocount
on
None.gif
if
isnull(
@keyfdname,
'')
=
''
None.gif
begin
None.gif
select
@keyfdname
=
cast(
newid()
as
char(
36)),
@nokey
=
1
None.gif
exec(
'
alter table [
'
+
@tbname
+
'
] add [
'
+
@keyfdname
+
'
] decimal(38,0) identity(1,1)
')
None.gif
end
None.gif
select
@fd
=
'',
@tj
=
''
None.gif
select
@fd
=
@fd
+
'
,[
'
+name
+
'
]
'
None.gif ,
@tj
=
@tj
+
'
[
'
+name
+
'
]=a.[
'
+name
+
'
] and
'
None.gif
from syscolumns
None.gif
where
object_name(id)
=
@tbname
and name
<>
@keyfdname
None.gif
set
@fd
=
substring(
@fd,
2,
8000)
None.gif
exec(
'
select
'
+
@fd
+
'
from [
'
+
@tbname
+
'
] a
None.gif where exists(select 1 from [
'
+
@tbname
None.gif
+
'
] where
'
+
@tj
+
'
[
'
+
@keyfdname
+
'
]<>a.[
'
+
@keyfdname
+
'
])
')
None.gif
if
@nokey
=
1
None.gif
exec(
'
alter table [
'
+
@tbname
+
'
] drop column [
'
+
@keyfdname
+
'
]
')
None.gif
set nocount
off
None.gif
go
None.gif
None.gif
--
调用示例
None.gif--
创建测试数据
None.gif
create
table 表(f1
int,f2
int,f3
int,f4
int,f5
int)
None.gif
insert
into
None.gif
select
1,
1,
1,
1,
1
None.gif
union
all
select
2,
1,
1,
1,
1
None.gif
union
all
select
3,
2,
1,
23,
1
None.gif
union
all
select
4,
2,
3,
1,
3
None.gif
union
all
select
5,
1,
1,
1,
1
None.gif
go
None.gif
None.gif
--
调用通用存储过程实现楼主的查询
None.gif
exec p_qry
'
',
'
f1
'
None.gif
None.gif
--
删除测试环境
None.gif
drop
table
None.gif
None.gif
ExpandedBlockStart.gif
ContractedBlock.gif
/**/
/*
--测试结果
InBlock.gif
InBlock.giff2 f3 f4 f5
InBlock.gif----------- ----------- ----------- -----------
InBlock.gif1 1 1 1
InBlock.gif1 1 1 1
InBlock.gif1 1 1 1
ExpandedBlockEnd.gif--
*/
None.gif
本文转自高海东博客园博客,原文链接http://www.cnblogs.com/ghd258/archive/2005/10/24/260769.html,如需转载请自行联系原作者
你可能感兴趣的文章
brk(), sbrk() 用法详解【转】
查看>>
iOS:quartz2D绘图 (动画)
查看>>
Linux内存管理原理【转】
查看>>
[搜片神器]直接从DHT网络下载BT种子的方法
查看>>
【译】UNIVERSAL IMAGE LOADER. PART 3---ImageLoader详解
查看>>
Node.js~ioredis处理耗时请求时连接数瀑增
查看>>
OOAD 面向对象分析与设计
查看>>
<context:component-scan>使用说明
查看>>
纹理贴图的干扰问题
查看>>
22.3. xinetd.d
查看>>
窗体间传值和窗体间互操作
查看>>
Jquery+php+ajax实现表单异步提交,动态添加回复评论
查看>>
3中查询数据库连接数
查看>>
oracle数据库中对varchar类型求max的解决方法
查看>>
JDK的OutputStream为什么方法write(int b)的入参类型是int呢?
查看>>
总结---3
查看>>
OK6410 tftp下载内核、文件系统以及nand flash地址相关整理、总结
查看>>
Redmine 数据库连接错误
查看>>
65.4. Other GUI - phpOraAdmin
查看>>
【设计模式】—— 适配器模式Adapter
查看>>