我有一个mysql表(我们称之为“user”),包含大约700000行数据。假设这里有一个小样本:
UserID DeptID Name Score
1 2 Bob 50
2 2 Bob 100
3 3 Jane 32
4 4 Jill 93
5 2 Bob 50
6 3 Jane 58
7 7 Jane 44
我想用一个重复的'name'和'deptid'来显示所有的行,但是只有不同的'score'。(用户标识与选择无关,只需显示即可。)
UserID DeptID Name Score
1 2 Bob 50
2 2 Bob 100
3 3 Jane 32
6 3 Jane 58
所以基本上你可以从上面看到,我是
不
想给另一个bob(用户id 5)显示50分(即使他在部门2)。
我的部分查询如下所示,只是它显示了所有的bob,我不知道如何将它
只有
显示分数在哪里
不同的
是的。
SELECT A.UserID, A.DeptID, A.Name, A.Score
FROM User AS A
INNER JOIN (
SELECT Name, DeptID
FROM User
GROUP BY Name, DeptID
HAVING COUNT(*) > 1
) AS B ON A.Name = B.Name AND A.DeptID = B.DeptID
这个查询在相当长的时间内运行。我尝试过的所有其他方法要么给出了错误的结果,要么是查询错误,要么是查询永远运行,最后我终止了进程。
我知道我漏掉了一些简单的东西,但我很难看清它是什么…
编辑
-好吧,巴玛的答案就是我想要的,谢谢!(我想我只是盯着我的sql语句看太久了,哈哈)
不过,这是一个新的转折点。我
只有
想让它显示一个特别的人
如果
有两个(或更多)不同的分数(在同一个部门内)。例如,如果只有两个鲍伯的两个都有50个(100个不存在),那两个都不会显示。