2016-01-23 5 views
3

Как удалить повторяющиеся строки из таблицы? Я искал Интернет, но я не смог решить проблему. Вот что я написал:SQL - Удалить повторяющиеся строки из таблицы

WITH C As 
(
Select A.PatientID, A.DoctorID 
From Appointment As A 
) 

Select Distinct A.PatientID, A2.PatientID, A.DoctorID 
From Appointment As A 
    Inner Join C as A2 
     On A.DoctorID = A2.DoctorID 
Where A.PatientID <> A2.PatientID 
Order By A.PatientID Asc 

Вот результат:

Duplicate Data

В изображении выше, вы заметите, что данные в строке 1 дублируется в строке 6. Как Я удаляю все повторяющиеся строки? Какие-либо предложения?

+0

Вы хотите удалить? или удалить его из выбранного? каковы ваши rdbms? –

+0

Я хочу удалить его из инструкции select. – BlueFox

+0

postgres, сервер oracle или sql? Как у вас есть имя поля PatientID? –

ответ

3

Вам не нужен КТР для этого

Попробуйте

SELECT DISTINCT PatientId, PatientId, DoctorID 
FROM Appointment A1 
JOIN Appointment A2 
    ON A1.PatientId < A2.PatientId 
    AND A1.DoctorID = A2.DoctorID 
Order By A1.PatientID Asc 
1

Вы не можете создавать Симметричную Dups в первую очередь, произвольно выбирая пациент, чтобы ВСЕГДА быть один из пары с меньше ID

... 
Where A.PatientID < A2.PatientID 

Это не поможет, если у вас есть Dups в исходной таблице, но его имя должно быть первичным ключом и/или иметь нЕТ t NULL & уникальный индекс на «PatientID»

Смежные вопросы