首页 > 编程知识 正文

union用法sql,sql语句where多个条件

时间:2023-05-04 19:07:10 阅读:105992 作者:1440

如果两个select语句的结果必须作为一个整体显示,则必须使用union或union all关键字。 union (或称为联合)的作用是将多个结果一起显示。

union和union all的区别在于,union会自动压缩多个结果集合中重复的结果,union all会显示所有结果,无论是否存在重复。

并行union两个结果集,同时对缺省规则进行排序,不包含重复行; union通过表链接过滤重复的记录,因此在表链接后对结果集进行排序,然后删除重复的记录并返回结果。 在实际的大多数APP应用中是不重复的记录,最一般的是工艺表和历史表union。 union all对两个结果集执行并行处理。 包含重复行,不进行排序。 如果返回的两个结果集包含重复数据,则返回的结果集包含重复数据。

Intersect交叉两个结果集的操作。 不包含重复的行,也进行默认规则的排序。

对Minus两个结果集执行不含重复行的差分操作,同时对缺省规则进行排序。

可以通过在最后一个结果集中指定Order by子句来更改排序方法。

例如:

select employee_id,job_id from employees

union

select employee_id,job_id from job_history

将以上两个表的结果合并在一起。 这两个示例压缩两个select语句结果的重复值。 也就是说,结果数据不是两个结果数量之和。 要允许union all在显示重复结果时仍可用,请执行以下操作:

oracle的scott用户具有表emp

select * from emp where deptno=20

全部合并

select * from emp where deptno=30

这里的结果有很多重复值。

关于union和union all关键字需要注意的问题如下。

union和union all不仅可以连接两个结果集,还可以连接多个结果集。

要使用union和union all,必须确保每个选择集合的结果中有相同数量的列,并且每列类型相同。 但是,列名称不必相同。 oracle使用第一个结果的列名作为结果集的列名。

例如,以下是一些例子。

select empno,ename from emp

union

select deptno,dname from dept

不必在每个select结果集中使用order by子句进行排序。 最后,可以使用order by对整个结果进行排序。 例如:

select empno,ename from emp

union

select deptno,dname from dept

order by ename;

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。