[英]What the syntax HAVING COUNT(*) >1 is doing in SQL?
我在一门在线课程中发现了这种语法。 我明白。 但它是如何工作的? 我不明白HAVING COUNT (*) > 1
。 这是否意味着在我的视图中计算表格的行数?
SELECT M1.title, m1.director
FROM MOVIE as M1
INNER JOIN MOVIE as M2 ON M1.director = M2.director
GROUP BY m1.mID, m1.title, m1.director
HAVING COUNT(*) > 1
ORDER BY m1.director, m1.title;
因此,在您的示例中,它返回GROUP BY
行数大于 1 的行。 注意大于不等于。
带有HAVING
子句的GROUP BY
检索指定组的结果,这些结果与HAVING
子句中的条件匹配。
HAVING
子句与COUNT()
一起使用,而不是WHERE
子句。
现在看下面的例子,我使用了简单的数据并命令它来帮助解释。
您有以下查询并正在申请表 TeamMember
SELECT FirstName,COUNT(*)
FROM TeamMember
GROUP BY FirstName
HAVING COUNT(*)>3
团队成员
+------------+----------------------+--------------------+
| StaffCode | FirstName | LastName |
+------------+----------------------+--------------------+
| 2343 | Alex | Jones |
| 7323 | Alex | Paker |
| 5676 | Alex | York |
| 6571 | Alex | Long |
| 5325 | Paul | Thomas |
| 5365 | Paul | Wanye |
| 5345 | Paul | Large |
| 3543 | Tom | Lee |
| 2311 | Tom | Freeman |
| 5434 | Zac | Rogers |
+------------+----------------------+--------------------+
这就是添加原因时发生的情况。
添加GROUP BY FirstName
+----------------------+--------------------+
| FirstName | COUNT(*) |
+----------------------+--------------------+
| Alex | 4 |
| Paul | 3 |
| Tom | 2 |
| Zac | 1 |
+----------------------+--------------------+
现在添加HAVING COUNT(*)>3
+----------------------+--------------------+
| FirstName | COUNT(*) |
+----------------------+--------------------+
| Alex | 4 |
+----------------------+--------------------+
如果需要,我已包含以下链接以供进一步参考。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.