- 浏览: 771761 次
- 性别:
- 来自: 广州
文章分类
最新评论
当使用union操作时,排序语句必须放在最后面才正确,如下:
只能在union的最后一个子查询中使用order by,而这个order by是针对整个unioning后的结果集的。So:
如果unoin的几个子查询列名不同,如
Sql代码
select supplier_id, supplier_name
from suppliers
UNION
select company_id, company_name
from companies
ORDER BY ?;
这里的问号如果是company_name,则执行整个查询会报“company_name:invalididentifier”(当然,单独执行第二个含orderby的子查询是没有问题的);这是因为unioning后结果集的列名是以第一个参加union的子查询的列名为准的;orderby针对的是整个unioning后的结果集。对整个查询结果来说,无”company_name“这个字段
如果是supplier_name,则单独执行第二个含order by的子查询是会报“supplier_name:invalididentifier”的,而执行整个查询是没有问题的,因为orderby针对的是unioning后的整个结果集,而这“整个结果集”是有supplier_name这列的(以第一个union子查询的列名作为unioning后整个结果集的列名)
为了避免这样事情的发生,可以:
1 使用列序号代替实际列名。如:
Sql代码
select supplier_id, supplier_name
from suppliers
UNION
select company_id, company_name
from companies
ORDER BY 2;
2、
或者可以这样:
select * from (SELECT SALING_DATE, JOB, NAME
FROM TABLE1
UNION
SELECT ARRIVE_DATE SALING_DATE, JOB, NAME
FROM TALBE2)
ORDER BY SALING_DATE;
只能在union的最后一个子查询中使用order by,而这个order by是针对整个unioning后的结果集的。So:
如果unoin的几个子查询列名不同,如
Sql代码
select supplier_id, supplier_name
from suppliers
UNION
select company_id, company_name
from companies
ORDER BY ?;
这里的问号如果是company_name,则执行整个查询会报“company_name:invalididentifier”(当然,单独执行第二个含orderby的子查询是没有问题的);这是因为unioning后结果集的列名是以第一个参加union的子查询的列名为准的;orderby针对的是整个unioning后的结果集。对整个查询结果来说,无”company_name“这个字段
如果是supplier_name,则单独执行第二个含order by的子查询是会报“supplier_name:invalididentifier”的,而执行整个查询是没有问题的,因为orderby针对的是unioning后的整个结果集,而这“整个结果集”是有supplier_name这列的(以第一个union子查询的列名作为unioning后整个结果集的列名)
为了避免这样事情的发生,可以:
1 使用列序号代替实际列名。如:
Sql代码
select supplier_id, supplier_name
from suppliers
UNION
select company_id, company_name
from companies
ORDER BY 2;
2、
或者可以这样:
select * from (SELECT SALING_DATE, JOB, NAME
FROM TABLE1
UNION
SELECT ARRIVE_DATE SALING_DATE, JOB, NAME
FROM TALBE2)
ORDER BY SALING_DATE;
发表评论
-
Oracle 10g 的clusterware 32位 下载地址
2013-04-19 23:03 1163Oracle 10g 的clusterware 32位 下载地 ... -
oracle 分析函数 RANK()
2013-04-11 00:05 1066RANK()既是一个聚合函数,也是一个分析函数 其具体的语法 ... -
oracle 分析函数
2013-04-09 23:25 1137分析函数是用于计算一组中多行的聚合值,与聚合函数的区别在于聚合 ... -
批量执行 bulk collect与forall用法
2013-04-08 23:49 1339BULK COLLECT 子句会批量检 ... -
pl/sql集合类型
2013-03-26 10:12 1542--集合类型 /* 单行单列的数据,使用标量变量 单行 ... -
oracle 行链接与行迁移
2013-03-16 01:06 1068表里的一行对于一个数据块太大的情况有二种(一行在一个数据块里放 ... -
oracle Health Monitor
2013-01-20 00:02 1574About Health Monitor Beginning ... -
oracle moving window size与 AWR retention period关系
2013-01-19 15:58 8455转自: http://tomszrp.itpub.net/po ... -
Oracle11.2新特性之INSERT提示IGNORE_ROW_ON_DUPKEY_INDEX
2013-01-12 00:20 2836insert提示IGNORE_ROW_ON_DUPKEY_IN ... -
oracle 11g新特性Flashback data archive
2013-01-09 22:52 30431. 什么是flashback data archive F ... -
RMAN List和report 命令
2012-12-25 00:07 2829LIST 命令 使用RMAN LIST 命令显示有关资料档案库 ... -
oracle ASM中ASM_POWER_LIMIT参数
2012-12-24 23:46 6368ASM_POWER_LIMIT 该初始化参数用于指定ASM例程 ... -
oracle I/O 从属进程
2012-12-24 23:24 1371I/O 从属进程 I/O从 ... -
easy connect 之 ORA-12154: TNS: 无法解析指定的连接标识符
2012-12-19 23:43 5592用easy connect连接出现“tns无法解析指定的连接标 ... -
Flashback Database --闪回数据库
2012-12-19 23:38 1337Flashback 技术是以Undo segment中的内容为 ... -
Oracle 11g新特性:Automatic Diagnostic Repository
2012-12-19 22:35 1349Oracle Database 11g的FDI(Fault D ... -
RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系
2012-12-19 22:09 2598RMAN配置中通道(CHANNEL)相 ... -
oracle 空间RESUMABLE
2012-12-14 22:05 3010空间RESUMABLE操作 转 Oracle从9i开始 ... -
oracle 创建视图 with check option
2012-12-13 23:14 1464我们来看下面的例子: create or replace vi ... -
flashback transaction闪回事务查询
2012-11-26 22:00 1462闪回事务查询有别于闪回查询的特点有以下3个: (1) ...
相关推荐
union all与order by用法,并详细举例,oracle pl/sql
1.5.6 ORDERBY子句 13 1.6 INSERT语句 14 1.6.1 单表插入 14 1.6.2 多表插入 15 1.7 UPDATE语句 17 1.8 DELETE语句 20 1.9 MERGE语句 22 1.10 小结 24 第2章 SQL执行 25 2.1 Oracle架构基础 25 2.2 SGA-...
5.4 select、From、where和Orderby 5.5 逻辑和值 5.5.1 单值测试 5.5.2 值列表的简单测试 5.5.3 组合逻辑 5.6 wbLere的另一个用途:子查询 5.6.1 从子查询得到单值 5.6.2 从子查询得到值列表 5.7 组合表 5.8 创建...
5.4 select、From、where和Orderby 5.5 逻辑和值 5.5.1 单值测试 5.5.2 值列表的简单测试 5.5.3 组合逻辑 5.6 wbLere的另一个用途:子查询 5.6.1 从子查询得到单值 5.6.2 从子查询得到值列表 5.7 组合表 5.8 创建...
下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。 1、用户 查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user_...
ORDER BY inst_id; INST_ID INST_NO INST_NAME PAR STATUS DB_STATUS STATE HOST -------- -------- ---------- --- ------- ------------ --------- ------- 1 1 orcl1 YES OPEN ACTIVE NORMAL rac1 2 2 orcl2 YES...
其一、就业面广:全球前100强企业99家都在使用ORACLE相关技术,中国政府机构,大中型企事业单位都能有ORACLE技术的工程师岗位。 其二、技术层次深:如果期望进入IT服务或者产品公司(类似毕博、DELL、IBM等),...
§2.4.1 用 ORDER BY 子句来对结果进行排序 76 §2.4.2 用 BREAK 命令 来对结果进行排列 76 §2.4.3 用 COMPUTE 命令对结果进行格式化 79 §2.5 配置会话环境 82 §2.5.1 ARRAYSIZE(取回的行数) 82 §2.5.2 ...
4.Order By子句 35 5.统计函数——列名应指定别名 35 6. Group By分组 36 7.Having子句 36 8.练习:表的查询 36 五. 在SQL *Plus中使用函数 37 1.字符串函数 37 2.数字函数 37 3.日期时间函数 38 4.转换函数 38 第...
2.4.13 尽量避免用order by 14 2.4.14 用Where子句替换HAVING子句 14 2.4.15 使用表的别名(Alias) 14 2.4.16 删除重复记录 14 2.4.17 COMMIT使用 15 2.4.18 减少多表关联 15 2.4.19 批量数据插入 15 2.5 索引使用...
将VISUAL C++与SQL 结合使用292 将DELPHI 与SQL 结合使用296 总结302 问与答303 校练场303 练习303 第二周回顾304 第三周概貌305 应用你对SQL 的知识305 第15 天对SQL 语句优化以提高其性能306 目标306 让你的SQL ...
NOT 与 IN 在一起使用时,NOT 是找出与条件列表不匹配的行。 IN 列表里有 NULL 时不处理,不影响结果;用 NOT IN 时,有 NULL 则出错,必须排除空值再运算。 in :选择列表的条件 使用IN操作符的优点: 在长的...
下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。 1、用户 查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user_...
9.3.4 CowNewSQL的使用方法 第10章 高级话题 10.1 SQL注入漏洞攻防 10.1.1 SQL注入漏洞原理 10.1.2 过滤敏感字符 10.1.3 使用参数化SQL 10.2 SQL调优 10.2.1 SQL调优的基本原则 10.2.2 索引 ...
9.3.4 CowNewSQL的使用方法 第10章 高级话题 10.1 SQL注入漏洞攻防 10.1.1 SQL注入漏洞原理 10.1.2 过滤敏感字符 10.1.3 使用参数化SQL 10.2 SQL调优 10.2.1 SQL调优的基本原则 10.2.2 索引 ...
9.3.4 CowNewSQL的使用方法 第10章 高级话题 10.1 SQL注入漏洞攻防 10.1.1 SQL注入漏洞原理 10.1.2 过滤敏感字符 10.1.3 使用参数化SQL 10.2 SQL调优 10.2.1 SQL调优的基本原则 10.2.2 索引 ...
9.3.4 CowNewSQL的使用方法 第10章 高级话题 10.1 SQL注入漏洞攻防 10.1.1 SQL注入漏洞原理 10.1.2 过滤敏感字符 10.1.3 使用参数化SQL 10.2 SQL调优 10.2.1 SQL调优的基本原则 10.2.2 索引 ...
9.3.4 CowNewSQL的使用方法 第10章 高级话题 10.1 SQL注入漏洞攻防 10.1.1 SQL注入漏洞原理 10.1.2 过滤敏感字符 10.1.3 使用参数化SQL 10.2 SQL调优 10.2.1 SQL调优的基本原则 10.2.2 索引 ...
9、说明:in 的使用方法 select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’) 10、说明:两张关联表,删除主表中已经在副表中没有的信息 delete from table1 where not exists ( select *...