事務

lucsa發表於2024-03-14

一、用法

和group by 一起使用,分組後再進行條件過濾就用到having了。

GROUP BY 分組欄位名 HAVING 分組後過濾條件

二、和WHERE的區別

1where是分組之前進行過濾,不滿足where條件的資料不參與分組,而having是分組之後對分組結果進行過濾。

2.where不能對聚合函式進行判斷,having可以。

三、示例

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `gender` char(1) DEFAULT NULL,
  `job` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `user` VALUES ('1', '張三', '25', '男', '會計');
INSERT INTO `user` VALUES ('2', '李四', '22', '男', '人事');
INSERT INTO `user` VALUES ('3', '王五', '21', '女', '業務員');
INSERT INTO `user` VALUES ('4', '趙六', '23', '女', '業務員');
#查詢大於1人的職業
SELECT job,COUNT(1) FROM `user` GROUP BY job HAVING COUNT(1)>1

相關文章