Найти строки в таблице, где field1 одинаковое, а field 2 другое - PullRequest
0 голосов
/ 01 февраля 2011

У меня есть строки таблицы, в которой хранятся UserID, EnrollmentID и другие данные.Я хочу получить все записи, в которых есть несколько экземпляров UserID и EnrollmentID.

Пример данных:

serial_no  userID  EnrollmentID
-------------------------------
1234       100     44
1235       100     55
1236       200     33
1237       300     66
1238       400     88
1239       400     77

Я бы хотел, чтобы возвращались следующие строки:

1234       100     44
1235       100     55
1238       400     88
1239       400     77

РЕДАКТИРОВАТЬ: Чтобы уточнить, я хочу, чтобы все строки, где ID пользователя существует с разными идентификаторами регистрации

Ответы [ 3 ]

5 голосов
/ 01 февраля 2011

Решение SQL Server 2005

select * from 
(
    select *, c = COUNT(*) over (partition by userID)
    from sampletable
) sq
where c > 1

или более обобщенно

select *
from sampletable
where userid in
(
    select userid
    from sampletable
    group by userid
    having COUNT(*) > 1
)

Используя этот образец

create table sampletable (serial_no int, userid int, enrollmentid int)
insert sampletable select 1234 ,100 ,44
insert sampletable select 1235 ,100 ,55
insert sampletable select 1236 ,200 ,33
insert sampletable select 1237 ,300 ,66
insert sampletable select 1238 ,400 ,88
insert sampletable select 1239 ,400 ,77

Вывод

serial_no  userid  enrollmentid
1234        100    44
1235        100    55
1238        400    88
1239        400    77
3 голосов
/ 01 февраля 2011
select a.serial_no, a.userID, a.EnrollmentID  
from a tableA 
where a.userID in (  
SELECT DISTINCT a.userID
FROM tableA  a, tableA  b
WHERE a.userID = b.userID
AND a.EnrollmentID <> b.EnrollmentID )
1 голос
/ 01 февраля 2011
SELECT a.* FROM Table1 a
INNER JOIN (
  SELECT UserID FROM Table1 GROUP BY UserID HAVING COUNT(*) > 1
) b ON a.UserID = b.UserID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...