废话少说,问题如下--创建测试表
create table test(
num1 number(4),
num2 number(4)
)--插入数据
insert into test values(1,1);
insert into test values(1,2);
insert into test values(1,3);
insert into test values(2,1);
insert into test values(2,2);
insert into test values(2,3);
insert into test values(3,1);
insert into test values(3,2);
insert into test values(3,3);
--插入重复项
insert into test values(1,1);
insert into test values(1,1);
insert into test values(2,3);问题:查询所有重复的项.不能使用表内的字段名,如: select * from test where num1=1 and num2=2;
可以使用到任何表上,只需换掉表名即可,可以使用伪列rowid等
create table test(
num1 number(4),
num2 number(4)
)--插入数据
insert into test values(1,1);
insert into test values(1,2);
insert into test values(1,3);
insert into test values(2,1);
insert into test values(2,2);
insert into test values(2,3);
insert into test values(3,1);
insert into test values(3,2);
insert into test values(3,3);
--插入重复项
insert into test values(1,1);
insert into test values(1,1);
insert into test values(2,3);问题:查询所有重复的项.不能使用表内的字段名,如: select * from test where num1=1 and num2=2;
可以使用到任何表上,只需换掉表名即可,可以使用伪列rowid等
解决方案 »
- 如何恢复oracle表名
- sql developer中能正常备份导出表,在cmd命令模式下就报错误12560
- 求一个客户ID的高效校验方法
- 如何编写一个时间器
- oracle exp/imp问题
- v$version什么意思?它有哪些兄弟姐妹?
- 请问如何从表中把有用的数据备份出来?
- 怎样买oracle?配置plsql网络应用程序要用9iAS和db,怎样购买license?cpu和named user怎么算?
- 请教一个关于时间的问题!
- 高手们,没事的时候看一眼吧。这条SQL语句错在哪里?应该怎么改正?
- oracle的简单问题.请教
- 在XP下安装Oracle 9i,安装成功后,在应用程序与服务里怎么没有Lisenter的服务?
DECLARE
strTable VARCHAR2(50):= UPPER(:table_name);
CURSOR cur IS
SELECT c.column_name
FROM All_Tab_Cols c
WHERE c.table_name = strTable;
strGroup VARCHAR2(200) := '';
strSql VARCHAR2(2000) := 'select * from ' || strTable;BEGIN
FOR cur_row IN cur
LOOP
strGroup := strGroup || cur_row.column_name || ', ';
END LOOP; IF strGroup IS NOT NULL THEN
strSql := strSql || ' group by ' || TRIM(TRAILING ',' FROM TRIM(strGroup)) ||
' having count(*) > 1';
END IF; OPEN :result_cur FOR strSql;
END;
这个,我想该可以用字段名,但是字段名如果多了的话,一样也查不出来
比方说,你用了num1和num2,如果这时候换张表,表里多了个num3,或者多了num3,num4,你又怎么查,这时候知道字段名也是没有的另外一楼大哥和二楼大哥,你们换张表试过吗,加几个字段名再查查,结果
num1 num2
1 1 1
2 2 1
3 3 1
而正确答案是 num1=1,num2=1 有三个重复行
num1=3,num2=1 有二个重复行
OK!给分!