Lewy SQL Dołącz tylko pierwszy mecz

Mam zapytanie do dużej liczby dużych tabel (wierszy i kolumn) z wieloma złączeniami, jednak jedna z tabel ma kilka zduplikowanych wierszy danych powodujących problemy dla mojego zapytania. Ponieważ jest to kanał do odczytu tylko w czasie rzeczywistym z innego działu, nie mogę naprawić tych danych, jednak próbuję zapobiegać problemom w moim zapytaniu z niego.

Biorąc to pod uwagę, muszę dodać te dane crap jako lewe przyłączenie do mojego dobrego zapytania. Zestaw danych wygląda tak:

IDNo    FirstName   LastName    ...
-------------------------------------------
uqx     bob     smith
abc     john        willis
ABC     john        willis
aBc     john        willis
WTF     jeff        bridges
sss     bill        doe
ere     sally       abby
wtf     jeff        bridges
...

(około 2 tuziny kolumn i 100K wierszy)

Moim pierwszym instynktem było wykonanie odmiennego podania około 80K wierszy:

SELECT DISTINCT P.IDNo
FROM people P

Ale kiedy spróbuję, otrzymam wszystkie wiersze z powrotem:

SELECT DISTINCT P.*
FROM people P

LUB

SELECT 
    DISTINCT(P.IDNo) AS IDNoUnq 
    ,P.FirstName
    ,P.LastName
    ...etc.    
FROM people P

Pomyślałem wtedy, że wykonam funkcję agregującą FIRST () na wszystkich kolumnach, ale to też jest błędne. Syntaktycznie czy robię tu coś złego?

Aktualizacja: Chciałem tylko zauważyć: Te rekordy są duplikatami opartymi na polu nie-kluczowym / nieindeksowanym o identyfikatorze wymienionym powyżej. Identyfikator to pole tekstowe, które chociaż ma tę samą wartość, jest innym przypadkiem niż inne dane powodujące problem.

questionAnswers(6)

yourAnswerToTheQuestion