TSQL寻找失踪值重复记录
样本数据:TSQL寻找失踪值重复记录
PageID Attribute
2860 Category
2860 Sub-Category
2861 Tag
2861 Tag
2862 Tag
2862 Category
2863 Sub-Category
2883 Category
2883 Sub-Category
问题1:我需要找到属性Sub-Category
不存在的页面的ID,所以我的结果应该是:
2861
2862
问题#2:我需要找到属性Sub-Category
和属性Category
都不存在的页面ID,所以我的结果应该是:
2861
1)
select pageid
from thetable
where pageid not in (select pageid from thetable where attribute = 'sub-category')
2)
select pageid
from thetable
where pageid not in (select pageid from thetable where attribute = 'sub-category')
and pageid not in (select pageid from thetable where attribute = 'category')
我认为第二种解决方案是不正确的,因为它将排除仅具有子类别或类别的记录,因为它们并没有考虑同时查找两个类别和子类别。 –
我确实尝试过它,它的工作原理 - @MurtazaMandvi你能解释为什么你认为AND在这种情况下会像OR一样行事吗?为了让select返回pageid,两者都必须是真实的 –
问题1:
Select PageID From Table
Group By PageID
Having Sum(Case When Attribute = 'Sub-category' Then 1 Else 0 End) = 0
问题2:
Select PageID From Table
Group By PageID
Having Sum(Case When Attribute In('Category', 'Sub-category') Then 1 Else 0 End) = 0
的SQL-AS-纯英语的解决方案:
问题#1:我需要找到属性子类别不存在页的ID。换句话说,“以外的所有与‘子类别’的属性的那些页面ID
SELECT PageID FROM MyTable
EXCEPT
SELECT PageID FROM MyTable WHERE Attribute = 'Sub-Category'
问题#2:我需要找到页面ID在属性子类和不存在的属性类别两者。换句话说,
SELECT PageID FROM MyTable
EXCEPT
SELECT PageID FROM MyTable WHERE Attribute IN ('Category','Sub-Category')
问题#“以外的所有与‘子类别’或‘类别’的属性的那些页面ID” 1期望的输出不应该包含2862,因为它包含'Sub-Category' – HaveNoDisplayName
C. orrected data谢谢 –
你的第二个问题输出也应该是2861 2862与第一个问题相同。因为2861既没有,也只有2862只有'分类',但没有'子分类'。 – HaveNoDisplayName