想达到什么效果?
为什么不用where,要用having?
为什么不用where,要用having?
解决方案 »
- 求助:oracle触发器批量插入数据止执行一次
- 高分求助一个select语句, 不够再加!
- 救命级求救:“OCI-21500: internal error code, arguments: [17099], [], [], [], [], [], [], []” 如何解决?
- Oracle的window服务启动时并未启动实例,如何解决呀?
- 动态sql问题:编译成功,执行报错:
- 如何随机从一个表中取数据呢?
- 如何从另一个数据库中导入数据
- ORACLE 在本机WIN2000 上装了服务器端后,还需要装客户端才能进行数据库的一般操作吗?
- asp 连接 ocacle 报错
- 为啥报错PLS-00905: 对象 HUARUI2016.PROCUSERATTENDANCE 无效
- Oracle触发器监听一个表,同时针对这个表的一个或两个字段的内容做修改
- 安装Oracle9I的时候不小心把SYSTEM用户锁住了,怎么办?
上面的是逻辑问题,你这里不能使用涉及的是语法问题
having后面跟的要么是参与分组的字段,要么就需要进行聚合,这和select后面字段的展示是一个道理
WITH t(a,b,c,d,f) AS
(SELECT 001, 222,0,1,4
FROM dual
UNION ALL
SELECT 001, 222,1,1,35
FROM dual
UNION ALL
SELECT 03, 222,1,1,4
FROM dual
UNION ALL
SELECT 001, 222,0,1,7
FROM dual
) SELECT a,b FROM t GROUP BY a,b HAVING a>1;
having 后面不能跟没 GROUP BY列
如果你想要工资大于2000的部门,那么语句是这样写
select deptno from scott.emp where sal>2000;
而你那样写肯定会报错:不是group by函数的。having后面是只能跟聚合函数的,如果一定改成你要的那样,就这样写:
select deptno from scott.emp group by deptno having sum(sal)>2000 ;
但是这样可能违背你写这句代码的初衷。