当前位置: 首页 > news >正文

GaussDB having 的用法

1 having 的作用

      having 子句使你能够指定过滤条件,从而控制查询结果中哪些组可以出现在最终结果里面。where 子句对被选择的列施加条件,而 having 子句则对 group by 子句所产生的组施加条件。

2 having 语法

下面可以看到 having 子句在 select 查询中的位置:
select
from
where
group by
having
order by
在 select 查询中,having 子句必须紧随 group by 子句,并出现在 order by 子句(如果有的话)之前。带有 having 子句的 select 语句的语法如下所示:
select column1,column2
from table1,table2
where [conditions]
group by column1,column2
having [conditions]
order by column1,column2;

3 having 实例

考虑 customers 表,表中的记录如下所示:
csdn=> select * from customers;id | name |     addr     | city |  zip   | province | age
----+------+--------------+------+--------+----------+-----1 | 张三 | 北京路27号   | 上海 | 200000 | 上海市   |2 | 李四 | 南京路12号   | 杭州 | 310000 | 浙江市   |3 | 王五 | 花城大道17号 | 广州 | 510000 | 广州省   |4 | 马六 | 江夏路19号   | 武汉 | 430000 | 湖北省   |5 | 赵七 | 西二旗12号   | 北京 | 100000 | 北京市   |7 | 老六 | 西二旗12号   | 北京 | 100000 | 北京市   |
(6 rows)csdn=>
csdn=>
csdn=>
下面是一个有关 having 子句使用的实例,该实例将会筛选出"城市"列的内容出
现次数大于或等于 2 的所有记录。

示代:
select * from customers
where city in (
select city from customers
group by city
having count(1)>1
)

结果:

注:

上面的代码用了一个子查询,主要是因为在 GaussDB中group by 分组后,在select 后面显示的列里面只能显示分组的列,比如我们这里对城市分组了,那么子查询里面就只能显示城市列,如果要显示其他列,比如要还要显示"省份"

select city,province from customers
group by city
having count(1)>1;

结果:

ERROR:  Column "customers.province" must appear in the GROUP BY clause or be used in an aggregate function.
LINE 1: select city,province from customers
^

所以我们将筛选出来符合条件的内容,通过子查询再传递给外面的主查询。主查询就可以不受 group by 的约束显示你想显示的内容了。

http://www.dtcms.com/a/311350.html

相关文章:

  • Ubuntu系统VScode实现opencv(c++)图像翻转和旋转
  • 电力系统分析笔记:发电机与变压器的数学建模与运行状态详解
  • Python打卡Day30 模块和库的导入
  • react 和 react native 的开发过程区别
  • 【相机】曝光时间长-->拖影
  • 【学习笔记】MySQL技术内幕InnoDB存储引擎——第7章 事务
  • openwrt下安装istore(基于pve)
  • Ollama前端:open-webui
  • [Linux入门] Ubuntu 系统中 iptables 的配置与使用
  • JavaScript:Ajax(异步通信技术)
  • 学习模板元编程(2)std::true_type/false_type
  • 垃圾收集器ParNewCMS与底层三色标记算法详解
  • Redisson高并发实战:Netty IO线程免遭阻塞的守护指南
  • JVM 03 类加载机制
  • uniapp scroll-view解析
  • 常用git命令
  • 算法训练营DAY46 第九章 动态规划part13
  • 【龙芯99派新世界】buildroot快速使用笔记
  • SPI通信中CS片选的两种实现方案:硬件片选与软件片选
  • 电力系统分析学习笔记(二)- 标幺值计算与变压器建模
  • QT5.12.8 QTabWidget 透明样式QSS
  • Flask + YARA-Python*实现文件扫描功能
  • C++音视频开发:基础面试题
  • STM32 GPIO 中8种配置模式
  • 图漾AGV行业常用相机使用文档
  • 快速了解机器学习
  • 【机器学习】非线性分类算法详解(下):决策树(最佳分裂特征选择的艺术)与支持向量机(最大间隔和核技巧)
  • Python Pandas.unique函数解析与实战教程
  • mac中使用gvm install没有效果
  • 【Android】进度条ProgressBar 可拖拽进度条Seekbar