十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
select a from A a1 where not exists (select 1 from table where A a2 where a1.a=a2.b)
创新互联是一家专业提供兴平企业网站建设,专注与网站制作、成都做网站、H5技术、小程序制作等业务。10年已为兴平众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。
union
select b from A a1 where not exists (select 1 from table where A a2 where a1.b=a2.a)
能表达的清楚些么?要查一条数据,用where条件总是能查的,如果是已经是一个结果集,要在结果集中将第二条数据取出来,那么你得先开窗函数dense_rank()over(partition by XXX order by YYY desc/asc) tn然后取tn=2的值。
具体可以百度下:
dense_rank()
over()
partition by
还有:
select * from(
select t.*,rownum rn from
(select e.* from emp e order by e.sal desc) t ) where rn = 2;
希望能对你有所帮助
方法一、用PL/SQL DEVELOPER 来比较
1.登陆数据库A.
2.打开TOOLS菜单下的Compare User Objects
3.点Target Session,登陆数据库B
4.执行Compare
5.返回的是所有不同的对象以及更新语句[@more@]方法二、
1、对需要比较的表进行分析(可全表可抽样,自选),否则统计信息不准;
2、通过dba_tab_col_statistics表的column_name字段进行比较
select tz.table_name ,tz.column_name from dba_tab_col_statistics tz
WHERE tz.owner = 'BSS' AND TZ.TABLE_NAME LIKE 'BSS_%'
and (TZ.TABLE_NAME ,TZ.COLUMN_NAME) not in(
select TZT.TABLE_NAME ,TZT.COLUMN_NAME
from dba_tab_col_statistics@tz_bsstzt tzt
WHERE tzt.owner = 'BSS' AND TZT.TABLE_NAME LIKE 'BSS_%')
create table tt( aa char(10),bb char (10));
insert into tt values('zhangsan','23');
insert into tt values('lisi','22');
insert into tt values('wanger','22');
select a.bb,count(*) from tt a where 1=1 group by a.bb having count(*)'1';
这样查出的结果能知道那个值重复了,不知道你是不是要这个。
虽然我不知道怎么直接比较,但我有个建议,你可以看看:
当使用游标循环数据时,比较上下两行数据,一般情况下,上下两行数据有些差异(比如说主键相差1等情况),如果没有这种差异的话,可以利用ROWNUM区分,然后再比较差异,
答得不好,请见谅