[英]Filter Count Clause - One to Many relationship
我目前有两个表,其中一个 versionLog 可以包含许多 ProductVersion。
以下 Sql 查询:
SELECT
versionlog.[Name],
(
SELECT COUNT(*)
FROM dbo.ProductVersions productVersion
WHERE productVersion.VersionLogId = versionLog.Id
) AS ProductVersions
FROM dbo.Versionlog versionLog
产生一个结果集类似于
Name | ProductVersions
Log1 | 12
Log2 | 6
Log3 | 0
等等..
如何将结果集限制为仅返回 ProductVersion Count = 0 的 Versionlogs?
根据谷歌,我需要使用Having
子句?
使用HAVING
:
SELECT versionlog.[Name]
FROM dbo.Versionlog versionLog
LEFT JOIN dbo.ProductVersions productVersion
ON productVersion.VersionLogId = versionLog.Id
GROUP BY versionlog.[Name]
HAVING COUNT(productVersion.VersionLogId) = 0;
并且没有分组:
SELECT versionlog.[Name]
FROM dbo.Versionlog versionLog
LEFT JOIN dbo.ProductVersions productVersion
ON productVersion.VersionLogId = versionLog.Id
WHERE productVersion.VersionLogId IS NULL
另一种方式子查询
select * from
(
SELECT
versionlog.[Name],
(
SELECT COUNT(*)
FROM dbo.ProductVersions productVersion
WHERE productVersion.VersionLogId = versionLog.Id
) AS ProductVersions
FROM dbo.Versionlog versionLog
) a where a.ProductVersions=0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.