缺失右括号
缺失右括号:oracle不区分大小写,但是在添加“之后,Oracle区分大小写的功能会缺失,不会改变大写,因此需要全程大写,或者脚本代码中加上“”,例如:select * from “wafer_detail”
缺失表达式
a.在from前或者表达式前有逗号
b.语法错误导致在其他地方报错,出现红色波浪号
c.数据类型不匹配,尤其是日期统一输入字符串型,实际是日期型
未找到要求的from关键字
查询字段中有未加逗号
不是group by表达式的原因
查询的所有字段,在group by中都要写出来,和mysql不同
分组函数要搭配group by使用,否则会报错
例如:
select a,b,c from name
where a like '张%'
group by a,b,c
模块不具有正确的结果列
- union指令的目的是将两个sql语句的查询结果合并起来, 可以查看你要的查询结果 。
- 但是要注意使用union连接的两个sql 语句的字段类型 、 字段个数 、 字段名要求完全匹配 。
- union在进行表连接后会对产生的结果进行排序运算 , 删除重复数据后返回结果 。
- union 与 unnion的效果是一样的 , 都是讲两个sql的查询结果合并 , 但是不同的是 union会将结果集进行排序后删除重复数据后返回 , 而union all 是直接将两个sql语句的查询结果合并返回 。所以从效率上来讲union all 要比union快得多 。
- 具体原因: 在使用union 合并查询结果时 , 两个结果集的字段名, 字段个数 , 字段类型 可能有不同 。
- 解决方法:
- 使两个sql的各自的结果集的字段名 、 字段类型 、 字段个数 保持一致
- 使两个sql 的结果集中的字段顺序保持一致 。
不能使用分组函数
在where中不能使用avg()等类似的函数
WHERE中不能使用聚合函数作为过滤条件,原因是过滤时机不对。
WHERE是在数据库检索表中数据时,对数据逐条过滤以决定是否查询出该数据时使用的,所以WHERE用来确定结果集的数据。
使用聚合函数的结果作为过滤条件,那么一定是数据从表中查询完毕(WHERE在查询过程中发挥作用)得到结果集,并且分组完毕才进行聚合函数统计结果,得到后才可以对分组进行过滤,由此可见,这个过滤时机是在WHERE之后进行的。
聚合函数的过滤子句要在having后使用,having必须在group by之后,过滤分组,
此文章为学习时自己整理,不是原创,只是自己记录,方便学习