oracle 的交并差函数,intersect;union;minus

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-11 02:52:43
oracle 的交并差函数,intersect;union;minus
操作表必须有相同的字段及数据类型, 可给列名其相同的别名实现
 
--intersect:  返回查询结果中相同的部分(交集)。
SELECT A,B FROM TABLE_A
INTERSECT
SELECT A,B FROM TABLE_B;
 
-- union,union all:  将查询的结果组合后返回, union会过滤重复,union all不过滤重复。 (合集)
-- TABLE_A和TABLE_B会去除重复数据
SELECT A,B FROM TABLE_A
UNION
SELECT A,B FROM TABLE_B;
 
minus:  返回在第一个查询结果中包含第二个查询结果中不包含的数据。(差集)
SELECT A,B FROM TABLE_A
MINUS
SELECT A,B FROM TABLE_B;



----------------------------------去重----------------------------------

使用rowid去重
       ROWID是数据的详细地址,通过rowid,oracle可以快速的定位某行具体的数据的位置。通过下面的语句,可以保留重复记录中的最新一条记录(即最后插入的那条记录)。

--查询出ROWID 不是最大的重复数据
SELECT * FROM HOEGH
WHERE ROWID NOT IN
 (SELECT MAX(ROWID) FROM HOEGH GROUP BY (H1, H2));

--删除表中 ROWID不是最大的数据(保留一条ROWID最小的数据)
DELETE FROM HOEGH
WHERE ROWID NOT IN
 (SELECT MAX(ROWID) FROM HOEGH GROUP BY (H1, H2));


----------------------------------索引----------------------------------

Oracle 创建索引表空间语法
Oracle 的索引可分为5种,它们包括唯一索引、组合索引、反向键索引、位图索引和基于函数的索引。
 
1、创建索引的标准语法
 
以下为引用内容: 
CREATE INDEX 索引名 ON 表名 (列名)
TABLESPACE 表空间名;
例如:
 
以下为引用内容: 
CREATE INDEX idx_of_imsi ON uim_auth_file(imsi) TABLESPACE users;
2、创建唯一索引
 
以下为引用内容: 
CREATE unique INDEX 索引名 ON 表名 (列名)
TABLESPACE 表空间名;
例如:
 
以下为引用内容: 
CREATE UNIQUE INDEX idx_of_imsi ON uim_auth_file(imsi) TABLESPACE users;
3、创建组合索引
 
以下为引用内容: 
CREATE INDEX 索引名 ON 表名 (列名1,列名2)
TABLESPACE 表空间名;
例如:
 
以下为引用内容: 
CREATE INDEX idx_of_imsi ON uim_auth_file(iccid,imsi) TABLESPACE users;
4、创建反向键索引
 
以下为引用内容: 
CREATE INDEX 索引名 ON 表名 (列名) reverse
TABLESPACE 表空间名;
例如:
 
以下为引用内容: 
CREATE INDEX idx_of_imsi ON uim_auth_file(imsi) reverse TABLESPACE users;
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!