該表中的數(shù)據(jù)時oracle 為了同步基表和物化視圖之間的數(shù)據(jù)的 當基表的數(shù)據(jù)發(fā)生變化 在日志表中就會產(chǎn)生數(shù)據(jù)。 等oracle將變化同步到物化視圖后 日志表中的數(shù)據(jù)會自動清除 一般情況下不建議手工刪除該表中的數(shù)據(jù)
成都創(chuàng)新互聯(lián)是一家專注于網(wǎng)站制作、網(wǎng)站建設與策劃設計,公安網(wǎng)站建設哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設十多年,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:公安等地區(qū)。公安做網(wǎng)站價格咨詢:13518219792
C列也要考慮對么?
delete from table x
where not exists (select 1 from (select a,b,max(c) c from table group by a,b ) y
where x.a=y.a and x.b=y.b and x.c=y.c);
隨機刪除重復列:
delete from table x
where exists(select 1 from (select a, b, max(rowid) max_rowid from table group by a, b) y
where x.a=y.a and x.b=y.b and x.rowid y.max_rowid);
select testid,count(1) from testtable group by testid having count(1)1
count(1)就是重復在數(shù)量
如何查詢重復的數(shù)據(jù)
select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) 1
PS:將上面的號改為=號就可以查詢出沒有重復的數(shù)據(jù)了。
Oracle刪除重復數(shù)據(jù)的SQL(刪除所有):
刪除重復數(shù)據(jù)的基本結(jié)構(gòu)寫法:
想要刪除這些重復的數(shù)據(jù),可以使用下面語句進行刪除
delete from 表名 a where 字段1,字段2 in(select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) 1)
上面的SQL注意:語句非常簡單,就是將查詢到的數(shù)據(jù)刪除掉。不過這種刪除執(zhí)行的效率非常低,對于大數(shù)據(jù)量來說,可能會將數(shù)據(jù)庫吊死。
建議先將查詢到的重復的數(shù)據(jù)插入到一個臨時表中,然后對進行刪除,這樣,執(zhí)行刪除的時候就不用再進行一次查詢了。如下:
CREATE TABLE 臨時表 AS (select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) 1)
上面這句話就是建立了臨時表,并將查詢到的數(shù)據(jù)插入其中。
下面就可以進行這樣的刪除操作了:
delete from 表名 a where 字段1,字段2 in (select 字段1,字段2 from 臨時表);
select distinct 字段名 from 表名;
或者
select 字段名 from 表名 group by 字段名;
第二種寫法,group by 中的字段名需要與select的字段名一致。
oracle和mysql,group by是由區(qū)別的。
oracle的gruop by 后跟的必須是select查詢出的字段
而且group by語句中select指定的字段必須是“分組依據(jù)字段”,其他字段若想出現(xiàn)在select中則必須包含在聚合函數(shù)中
聚合函數(shù)比如:
sum(列名) 求和
max(列名) 最大值
min(列名) 最小值
avg(列名) 平均值
count(列名) 統(tǒng)計記錄數(shù) 注意和count(*)的區(qū)別
select a.app_name as dealInfoId,
SUM(CASE
WHEN l.ser_type = '日??头? then
1
else
end) as rc,
SUM(CASE
WHEN l.ser_type = '溫馨提示' then
1
else
end) as wx,
SUM(CASE
WHEN l.ser_type = '更新提示' then
1
else
end) as gx,
SUM(CASE
WHEN l.ser_type = '回訪' then
1
else
end) as hf,
SUM(CASE
WHEN l.ser_type = '培訓' then
1
else
end) as px
FROM work_info_log l, config_app a
where l.config_app = a.id
and l.office_id in (34, 500201)
group by a.app_name;