У меня есть запрос против большого числа больших таблиц (строк и столбцов) с несколькими объединениями, однако в одной из таблиц есть несколько повторяющихся строк данных, вызывающих проблемы для моего запроса. Поскольку это только чтение в реальном времени из другого отдела, я не могу исправить эти данные, однако я пытаюсь предотвратить проблемы в моем запросе.
Учитывая, что мне нужно добавить эти данные дерьма в качестве левого соединения к моему хорошему запросу. Набор данных выглядит так:
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
...
(около 2 десятков столбцов и 100 тыс. строк)
Мой первый инстинкт состоял в том, чтобы выполнить отчет, который дал мне около 80 тыс. строк:
SELECT DISTINCT P.IDNo
FROM people P
Но когда я пытаюсь сделать следующее, я возвращаю все строки:
SELECT DISTINCT P.*
FROM people P
ИЛИ
SELECT
DISTINCT(P.IDNo) AS IDNoUnq
,P.FirstName
,P.LastName
...etc.
FROM people P
Тогда я подумал, что я буду выполнять агрегатную функцию FIRST() во всех столбцах, однако это тоже не так. Синтаксически я делаю что-то неправильно здесь?
Update: Просто хотелось бы отметить: эти записи являются дубликатами на основе неиндексного/неиндексированного поля идентификатора, указанного выше. Идентификатор - это текстовое поле, которое хотя и имеет одно и то же значение, это другой случай, чем другие данные, вызывающие проблему.