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.