SQL Left Join nur erste Übereinstimmung

Ich habe eine Abfrage für eine große Anzahl von großen Tabellen (Zeilen und Spalten) mit einer Anzahl von Verknüpfungen. Eine der Tabellen weist jedoch einige doppelte Datenzeilen auf, die Probleme für meine Abfrage verursachen. Da dies ein schreibgeschützter Echtzeit-Feed einer anderen Abteilung ist, kann ich diese Daten nicht korrigieren. Ich versuche jedoch, Probleme bei meiner Abfrage zu vermeiden.

Angesichts dessen muss ich diese Mistdaten als Links-Join zu meiner guten Abfrage hinzufügen. Der Datensatz sieht folgendermaßen aus:

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
...

(ca. 2 Dutzend Spalten und 100.000 Zeilen)

Mein erster Instinkt war, ein bestimmtes Ergebnis zu erzielen, das mir ungefähr 80.000 Zeilen gab:

SELECT DISTINCT P.IDNo
FROM people P

Aber wenn ich Folgendes versuche, bekomme ich alle Zeilen zurück:

SELECT DISTINCT P.*
FROM people P

ODER

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

Ich dachte dann, ich würde eine FIRST () - Aggregatfunktion für alle Spalten ausführen, aber das fühlt sich auch falsch an. Mache ich hier syntaktisch etwas falsch?

Aktualisieren: Ich wollte nur erwähnen: Diese Datensätze sind Duplikate, die auf einem oben aufgelisteten Nicht-Schlüssel- / Nicht-indizierten ID-Feld basieren. Die ID ist ein Textfeld, das zwar denselben Wert hat, sich jedoch von den anderen Daten unterscheidet, die das Problem verursachen.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage