重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
该表中的数据时oracle 为了同步基表和物化视图之间的数据的 当基表的数据发生变化 在日志表中就会产生数据。 等oracle将变化同步到物化视图后 日志表中的数据会自动清除 一般情况下不建议手工删除该表中的数据
成都创新互联是一家专注于网站制作、网站建设与策划设计,公安网站建设哪家好?成都创新互联做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:公安等地区。公安做网站价格咨询: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)就是重复在数量
如何查询重复的数据
select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) 1
PS:将上面的号改为=号就可以查询出没有重复的数据了。
Oracle删除重复数据的SQL(删除所有):
删除重复数据的基本结构写法:
想要删除这些重复的数据,可以使用下面语句进行删除
delete from 表名 a where 字段1,字段2 in(select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) 1)
上面的SQL注意:语句非常简单,就是将查询到的数据删除掉。不过这种删除执行的效率非常低,对于大数据量来说,可能会将数据库吊死。
建议先将查询到的重复的数据插入到一个临时表中,然后对进行删除,这样,执行删除的时候就不用再进行一次查询了。如下:
CREATE TABLE 临时表 AS (select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) 1)
上面这句话就是建立了临时表,并将查询到的数据插入其中。
下面就可以进行这样的删除操作了:
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是由区别的。
oracle的gruop by 后跟的必须是select查询出的字段
而且group by语句中select指定的字段必须是“分组依据字段”,其他字段若想出现在select中则必须包含在聚合函数中
聚合函数比如:
sum(列名) 求和
max(列名) 最大值
min(列名) 最小值
avg(列名) 平均值
count(列名) 统计记录数 注意和count(*)的区别
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;