SQL - Как удалить дубликат из объединяемой таблицы

Представьте, что вы объединяете две таблицы из 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 в приведенном выше примере.

Не уверен, возможно ли это, но надеюсь на вашу помощь.

Спасибо,

Тони

Отметьте свой вопрос с помощью базы данных, которую вы используете.

Gordon Linoff 23.08.2018 04:00
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
1
30
1

Ответы 1

Один метод использует предложение 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 подзапроса? Спасибо!

Tony Nguyen 23.08.2018 04:08

Также Гордон, я заметил, что многие результаты были удалены. Допустим, у меня было 10 результатов до изменения с 4 результатами с дублированием. После изменения я получил только 1-2 результата. Ты знаешь почему?

Tony Nguyen 23.08.2018 04:14

@TonyNguyen. . . Возможно, вам потребуется настроить скрипт SQL.

Gordon Linoff 23.08.2018 04:18

какова цель этой настройки?

Tony Nguyen 23.08.2018 04:19

Другие вопросы по теме