2016-03-14 1 views
2

Итак, у меня есть таблица, содержащая StudentID и номера телефонов. Некоторые студенты имеют один и тот же номер телефона, и я хочу выбрать и отобразить этих учеников.Проверка наличия двух пользователей одного и того же номера телефона в SQL

Например.

+-----------+-----------+--------------+ 
| StudentID | StudentID | PNumber  | 
+-----------+-----------+--------------+ 
|  1000 |  1000 | 970-555-1000 | 
|  1000 |  1000 | 970-555-1010 | 
|  1100 |  1100 | 970-555-1100 | 
|  1200 |  1200 | 303-555-1200 | 
|  1200 |  1300 | 303-555-1200 | 
|  1300 |  1200 | 303-555-1200 | 
|  1300 |  1300 | 303-555-1200 | 
|  1300 |  1300 | 303-555-1210 | 
|  1400 |  1400 | 970-555-1400 | 
|  1500 |  1500 | None   | 
|  1600 |  1600 | 970-555-1600 | 
|  1600 |  1700 | 970-555-1600 | 
|  1700 |  1600 | 970-555-1600 | 
|  1700 |  1700 | 970-555-1600 | 
|  1800 |  1800 | 970-555-1800 | 
|  1900 |  1900 | 970-555-1900 | 
|  2000 |  2000 | 970-555-2000 | 
|  2000 |  2000 | 970-555-2010 | 
|  2001 |  2001 | 970-555-2001 | 
+-----------+-----------+--------------+ 

Это должно выход:

1200 | 1300 | 303-555-1200 
1300 | 1200 | 303-555-1200 
1600 | 1700 | 970-555-1600 
1700 | 1600 | 970-555-1600 
+0

Почему ваш вход имеет два столбца с тем же имя? – dovetalk

ответ

1

пытается присоединиться к себе:

select t1.StudentID,t2.StudentID,t1.PNumber 
from Student t1 
join Student t2 on t1.PNumber= t2.PNumber 
where t1.StudentID <> t2.StudentID 
1

Используйте автообъединение:

SELECT 
    s1.StudentID, s2.StudentID, s1.PNumber 
FROM 
    students s1 INNTER JOIN students s2 USING(StudentID) 
WHERE s1.PNumber = p2.PNumber; 
+0

Итак, у меня был такой же код, что и сам JOIN. Это в основном соединение таблицы с самим собой? –

+0

Да. Соединение с самим собой. –