SQL 其他问题

SET 操作符将多个查询用 SET 操作符联接组成一个新的查询

排序

SET运算符:

union 查询结果的并集,去重

union all 查询结果的并集,不去重

intersect 查询结果的交集

minus 查询结果的差集

这里写图片描述

示例:

首先创建两个表:

create table emp1

as

select * from employees

where department _id in(70,80)

create table emp2

as

select * from employees

where department _id in(80,90)

select employee _id “id” ,department_id, 2 as “num”

from emp1

union

select employee _id, department_id ,1

from emp2

order by 3

注意问题:

原则 在select列表中的 列名和表达式 在数量和数据类型上要相对应。

排序问题:默认的排序是按照 第一列数值 升序排列

可以在语句的最后自定义指明列,当然也可以在每一个查询结果的后面自定义一个虚拟的列专门用来排序 数字 as“列别名”

在语句的最后指明 order by 列名。

order by 语句也只能出现在语句的最后,可以使用第一个查询中的列名,别名,或相对位置(自定义虚拟列)。

注意:对于自定义的虚拟列 指明其所在第几列即可。

column 虚拟列别名 noprint;–不打印自定义的排序虚拟列。

1,除 UNION ALL之外,系统会自动将重复的记录删除 2,系统将第一个查询的列名显示在输出中 3,除 UNION ALL之外,系统自动按照第一个查询中的第一个列的升序排列

SELECT department_id, TO_NUMBER(null) location,hire_date FROM employees UNION SELECT department_id, location_id, TO_DATE(null) FROM departments;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值