首页 > 解决方案 > SQL 查询搜索 itemID = 0 和具有这些 itemID 等的组

问题描述

我喜欢编写一个查询,在其中过滤 ItemID 和 GroupID。

我想知道哪些 GroupID 有 ItemID = 0 的项目并且有更多项目。当 GroupID 的 ItemID 类似于 0 时,它不能有任何其他项目。

SELECT TOP (1000) 
  [GroupID]
  ,[ItemID] 
FROM [Store].[dbo].[Items]
where [ItemID] like '0'

我对 sql 真的很陌生,不知道如何进入下一步。

标签: sql

解决方案


group by您可以使用和解决此问题having

我想知道哪些 GroupID 有 ItemID = 0 的项目并且有更多项目。

这将是:

select GroupId
from Items i
group by GroupId
having sum(case when ItemId = 0 then 1 else 0 end) > 0 and -- has "0" and
       sum(case when ItemId <> 0 then 1 else 0 end) > 0;

这可以通过一些(合理的)假设来简化。如果“0”是最小值ItemId并且没有重复项,则:

where min(ItemId) = 0 and count(*) > 1

当 GroupID 的 ItemID 类似于 0 时,它不能有任何其他项目。

如果您想要只有项目 0 的组,那么:

where min(ItemId) = 0 and max(ItemId) = 0

推荐阅读