select?a?from??A?a1?where?not?exists?(select?1?from?table?where?A?a2?where?a1.a=a2.b)
創(chuàng)新互聯(lián)是一家專業(yè)提供興平企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站制作、成都做網(wǎng)站、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為興平眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進行中。
union
select?b?from??A?a1?where?not?exists?(select?1?from?table?where?A?a2?where?a1.b=a2.a)
能表達的清楚些么?要查一條數(shù)據(jù),用where條件總是能查的,如果是已經(jīng)是一個結(jié)果集,要在結(jié)果集中將第二條數(shù)據(jù)取出來,那么你得先開窗函數(shù)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.登陸數(shù)據(jù)庫A.
2.打開TOOLS菜單下的Compare User Objects
3.點Target Session,登陸數(shù)據(jù)庫B
4.執(zhí)行Compare
5.返回的是所有不同的對象以及更新語句[@more@]方法二、
1、對需要比較的表進行分析(可全表可抽樣,自選),否則統(tǒng)計信息不準;
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';
這樣查出的結(jié)果能知道那個值重復(fù)了,不知道你是不是要這個。
雖然我不知道怎么直接比較,但我有個建議,你可以看看:
當(dāng)使用游標循環(huán)數(shù)據(jù)時,比較上下兩行數(shù)據(jù),一般情況下,上下兩行數(shù)據(jù)有些差異(比如說主鍵相差1等情況),如果沒有這種差異的話,可以利用ROWNUM區(qū)分,然后再比較差異,
答得不好,請見諒