【发布时间】:2012-05-25 21:00:07
【问题描述】:
如果有人能验证我的 SQL 查询,我将不胜感激。
对于以下数据集:
MD5 UserPK CategoryPK
ADCDE 1 7
ADCDE 1 4
ADCDE 1 7
dffrf 1 7
dffrf 2 7
dffrf 2 6
dffrf 1 1
我想选择 MD5 和 CategoryPK,其中两行或多行具有相同的 MD5 值、相同的 CatgegoryPK 和两个或更多不同的 UserPK 值。
换句话说,我想知道两个或多个不同用户 (UserPK) 已将同一类别 (UserPK) 分配给同一文件 (Md5) 的所有记录的 MD5 和 categoryPK。我对同一用户多次分配类别的记录不感兴趣,(除非不同的用户也为该文件分配了相同的类别)。
所以从上面的数据来看,我想只返回:
md5 CategoryPK
dffrf 7
我写的查询是:
SELECT md5,
count(md5),
count(distinct categorypk) as cntcat,
count(distinct userpk) as cntpk
FROM Hash
group by md5 having count(md5) > 1
and cntpk > 1
and cntcat = 1;
它似乎有效,但在我开始愤怒地使用它之前,如果我遗漏了什么或者有更好的方法,我会很感激第二个意见。
谢谢
【问题讨论】:
-
这类问题可能比 StackOverflow 更适合 Code Review。
标签: mysql select count distinct