Представьте, что вы объединяете две таблицы из DB1 и DB2 следующим образом:
SELECT
DB1.CRE1,
DB2.CRE2,
DB2.DAY2
FROM DB1
JOIN DB2 ON DB1.KEY1 = DB2.KEY2
;
Результат, который я получаю, выглядит примерно так:
DB1.CRE1---DB2.CRE2---DB2.DAY2
CRE1_A-----CRE2_A-----SEP01
CRE1_A-----CRE2_A-----SEP02
...
Выше видно, что одно значение DB1.CRE1 соответствует нескольким значениям DB2.CRE2, потому что с одним и тем же DB2.CRE2 связаны разные даты. Ищу решение: - Сопоставьте 2 таблицы согласно заданному условию DB1.KEY1 = DB2.KEY2, и; - Удалите повторяющиеся значения из DB2.CRE2 и возьмите только самую раннюю дату (DB2.DAY2), связанную с DB2.CRE2, например SEP01 в приведенном выше примере.
Не уверен, возможно ли это, но надеюсь на вашу помощь.
Спасибо,
Тони


Один метод использует предложение WHERE с коррелированным подзапросом:
SELECT DB1.CRE1, DB2.CRE2, DB2.DAY2
FROM DB1 JOIN
DB2
ON DB1.KEY1 = DB2.KEY2
WHERE DB2.DAY2 = (SELECT MIN(D2.DAY2)
FROM DB2 D2
WHERE D2.KEY2 = DB2.KEY2
);
Подзапрос вычисляет минимальный DAY2 для каждого KEY2.
Внешний запрос возвращает только строку, которая соответствует этому DAY2 для каждого KEY2.
Привет, Гордон! Ваше решение работает, но могу ли я получить ваше объяснение по предложению WHERE подзапроса? Спасибо!
Также Гордон, я заметил, что многие результаты были удалены. Допустим, у меня было 10 результатов до изменения с 4 результатами с дублированием. После изменения я получил только 1-2 результата. Ты знаешь почему?
@TonyNguyen. . . Возможно, вам потребуется настроить скрипт SQL.
какова цель этой настройки?
Отметьте свой вопрос с помощью базы данных, которую вы используете.