У меня есть таблица mysql (назовем ее 'user') с 700 000 строк данных.Скажем, вот небольшой пример:
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
Я хочу показать все строки с одинаковыми «Именем» И «DeptID», НО ТОЛЬКО разными «Счетами».(Идентификатор пользователя не имеет значения для выбора, его просто нужно отобразить.)
UserID DeptID Name Score
1 2 Bob 50
2 2 Bob 100
3 3 Jane 32
6 3 Jane 58
Так что, как вы можете видеть сверху, я не хочу показать другого Боба (UserID5) со счетом 50 (даже при том, что он находится в Отделе 2).
У меня есть часть запроса, работающая, как показано ниже, за исключением того, что он показывает всех Бобов, и я не знаю, как его получитьдо только показать, где баллы отличаются .
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, смеется)
Вот новый поворот.Я только хочу, чтобы он показывал конкретному человеку , если есть 2 (или более) разных результата (в пределах одного и того же DeptID).Так, например, если бы было только два Боба, у обоих было 50 (100 не существовало), ни один из них не отображался бы.