我需要创建一个存储过程来处理一个表,该表查找在具有不同状态的特定id上匹配的行
我知道获取行数据的语法,但我以前从未尝试过比较同一表中的两行?它是如何完成的?我是否需要使用变量来存储每个变量的数据?或者其他方式?
这个问题是基于这个问题,但对Oracle进行了一些修改:
该表的第一个可以具有也可以不具有多对多、多对一,与其他表的一对多关系。
编辑1:
表如下所示:
create table Test(
id char32 not null,
column1 varchar2(2048),
column2 varchar2(2048),
...
column30 varchar2(2048)
)
任何列中的任何差异都会导致它们不同。存储过程将只返回关于它们是否相同的true或false。
以下形式的选择将测试dups:
select id ,
column1 ,
column2 ,
...
column30 ,
count(*)
from test
group by id ,
column1 ,
column2 ,
...
column30
having count(*) > 1
;
您也可以将测试表自联接到其自身,或者使用MINUS