缺失右括号

缺失右括号: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

模块不具有正确的结果列

  1. union指令的目的是将两个sql语句的查询结果合并起来, 可以查看你要的查询结果 。
  2. 但是要注意使用union连接的两个sql 语句的字段类型 、 字段个数 、 字段名要求完全匹配 。
  3. union在进行表连接后会对产生的结果进行排序运算 , 删除重复数据后返回结果 。
  4. union 与 unnion的效果是一样的 , 都是讲两个sql的查询结果合并 , 但是不同的是 union会将结果集进行排序后删除重复数据后返回 , 而union all 是直接将两个sql语句的查询结果合并返回 。所以从效率上来讲union all 要比union快得多 。
  5. 具体原因: 在使用union 合并查询结果时 , 两个结果集的字段名, 字段个数 , 字段类型 可能有不同 。
  • 解决方法:
  • 使两个sql的各自的结果集的字段名 、 字段类型 、 字段个数 保持一致
  • 使两个sql 的结果集中的字段顺序保持一致 。

不能使用分组函数

在where中不能使用avg()等类似的函数

WHERE中不能使用聚合函数作为过滤条件,原因是过滤时机不对。

WHERE是在数据库检索表中数据时,对数据逐条过滤以决定是否查询出该数据时使用的,所以WHERE用来确定结果集的数据。

使用聚合函数的结果作为过滤条件,那么一定是数据从表中查询完毕(WHERE在查询过程中发挥作用)得到结果集,并且分组完毕才进行聚合函数统计结果,得到后才可以对分组进行过滤,由此可见,这个过滤时机是在WHERE之后进行的。

聚合函数的过滤子句要在having后使用,having必须在group  by之后,过滤分组,

此文章为学习时自己整理,不是原创,只是自己记录,方便学习