繁体   English   中英

过滤器计数子句 - 一对多关系

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM