oracle数据库查询去除重复的记录,保留其中的某一条

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle数据库查询去除重复的记录,保留其中的某一条相关的知识,希望对你有一定的参考价值。

如图,按照账号、户名、开户行为参考是否重复,如果重复要去除条件是公有的记录,保留私有的记录。麻烦数据库大神指导下这种情况SQL怎么写?谢谢。表名例如为A。 另外用户ID可以作为参数传进sql里

SELECT * FROM A X WHERE NOT EXISTS(SELECT * FROM A Z WHERE EXISTS
( SELECT 账号,户名,开户行 FROM A WHERE 账号=Z.账号 AND 户名=Z.户名 AND 开户行=Z.开户行 GROUP BY 账号,户名,开户行 HAVING COUNT(*)>1)
AND 是否公有='公有' AND 账号=X.账号 AND 户名=X.户名 AND 开户行=X.开户行 AND 是否公有=X.是否公有)
参考技术A SELECT 账号,户名,开户行,是否公有,用户ID
FROM A

WHERE A.ID IN ('000001','000002',...) -- ID参数条件
AND A.是否公有='私有'
UNION -- 与UNION ALL不同的是UNION 会自动去重复
SELECT 账号,户名,开户行,是否公有,用户ID
FROM A

WHERE A.ID IN ('000001','000002',...) -- ID参数条件
AND A.是否公有='公有'

AND A.ID NOT IN (SELECT ID FROM A WHERE A.是否公有='私有')本回答被提问者和网友采纳

Oracle课程档案,第五天

集合操作

desc job_history:改变历史职位


job_history:历史表

vnion:重复值只保留一个 去除重复值 ★★

vnion all: 把所有重复值保留 不去除重复值★★

intersect:相交

minus:减去

双引号对不规范的对象命名★★

单引号是一个字符串★★

desc departments 查询部门表里面的有哪些列

desc employees 查询员工表里面的有哪些列

 

 


select employee_id, job_id from employees
union all
select employee_id, job_id from job_history;

select employee_id, job_id from employees
union
select employee_id, job_id from job_history;

select employee_id, job_id from employees
intersect
select employee_id, job_id from job_history;

select employee_id from employees
minus
select employee_id from job_history;

select employee_id, job_id, salary from employees
union all
select employee_id, job_id, null from job_history;

select employee_id, job_id, to_char(salary) from employees
union all
select employee_id, job_id, ‘no salary‘ from job_history;

集合排序:
select employee_id, job_id, salary from employees
union all
select employee_id, job_id, null from job_history
order by salary;

select employee_id, job_id, null from job_history
union all
select employee_id, job_id, salary from employees
order by 3;

salary null跟上空值 个人理解

 


创建表:

 

create table:创建表

insert into:插入

update:更新

delete:删除表里的数据

drop:删除表

constraint:约束条件 commit:提交 创建表完事后 一定要提交 commit;

not null:非空

view:视图 drop sequence course_cid; 删除增量的名字 如果重复就用这个删除 coure_cid为你创建的要删除的重复名字

sequence:序列

uniquenes:唯一性 start with:从....开始

varchar2:长字符

modify:修改,添加

主键(primary key)约束、外键(foreign key)约束、唯一(unique)约束、检查(check)约束、默认值(default)约束实例

 


约束的类型有如下几种:
C (check constraint on a table)
P (primary key)
U (unique key)
R (Referential AKA Foreign Key)
V (with check option, on a view)
O (with read only, on a view)

 

 

 

 

 

 

DML

x:第一列+数据类型

y:第二列+字符类型——字符类型必须加单引号

z:第三列+日期类型


select * from + 表名+想查的东西

desc+表名 也可以查

删除表:drop table + 表名

user_table:当前用户下所有表的名字

删除行(删除数据):delete from table + 哪一行

DDL

修改表结构

alter table t1 xxxxxx ★★

删除列:alter t1 drop x

 

create table t1(x(列名)int(类型) constraint(约束条件) t1_x_pk(约束的名字)primarykey(主键));

 































以上是关于oracle数据库查询去除重复的记录,保留其中的某一条的主要内容,如果未能解决你的问题,请参考以下文章

oracle查询重复数据方法

sql查询消除重复记录

oracle 查询所有字段,某字段重复只显示一条

如何确定Oracle数据库表中重复的记录

oracle之如何删除表中的重复记录只保留其中一条

oracle查重复数据并显示出来