今天秦赟给我讲解了一下Having的用法,感觉很好用,也很简单,看来以后发展的话还是要多在db上下下功夫:下面是Having的学习笔记
注意:Having和Where的区别,简单的使用where,如果有group by的话那么就需要用Having在group by后面作为条件,如果在group的前面就需要用where来做限定条件。
HAVING 子句
在 Select 语句中指定,显示哪些已用 GROUP BY 子句分组的记录。在GROUP BY组合了记录后, HAVING会显示 GROUP BY 子句 分组的任何符合 HAVING 子句的记录。--比较饶口,基本意识就是分组以后使用Having来做条件
语法
SELECT 字段表
FROM 表
WHERE选择准则
GROUP BY 分组字段表
[HAVING分组准则]
包含 HAVING 子句的 SELECT 语句具有以下几个部分:
部分 |
说明 |
fieldlist |
要和任何字段名别名, SQL 合计函数s, 选择断定 (ALL, DISTINCT, DISTINCTROW, 或 TOP)或其他SELECT 语句选择一起检索的字段名称。 |
table |
从其中获取记录的表的名称。欲知更多信息请看 FROM 子句. |
selectcriteria |
选择准则。如果此 语句 包含一个 WHERE 子句, Microsoft Jet数据库引擎 会在记录上应用WHERE条件,然后把值分组。 |
groupfieldlist |
用来对记录分组的字段名,最多有 10 个字段。在 groupfieldlist 中字段名的顺序将决定组层次,由最高至最低的层次来分组。 |
groupcriteria |
一个表达式,用以决定应显示的已分组记录。 |
说明
HAVING 是可选的。
HAVING 与 WHERE 类似,可用来决定选择哪个记录。在使用 GROUP BY对这些记录分组后,HAVING 会决定应显示的记录:
SELECT CategoryID,
Sum(UnitsInStock)
FROM Products
GROUP BY CategoryID
HAVING Sum(UnitsInStock) > 100 And Like "BOS*";
一个 HAVING 子句最多可包含 40 个表达式,并由诸如 And 及 Or 之类的逻辑操作符来链接这些表达式。
实例:select count(*) as c, phone from miscflow group by phone having count(*)=5