Искать дубликаты - PullRequest
       0

Искать дубликаты

0 голосов
/ 27 мая 2020

Я пытаюсь выполнить поиск, чтобы получить целевой идентификатор из таблицы (s:

source_id      source_name        target_name
1              abc                def
2              def                def
3              ghi                jkl
4              jkl                mno

Я использую:

select a.*,b.source_id as parent_id
from table a
left join table b
on a.source_name=b.target_name;

Но я получаю дубликаты после этого соединения, когда я применить к большим данным. Пожалуйста, помогите мне, в чем может быть причина здесь. Мне нужно, чтобы счетчик (*) таблицы до и после соединения был таким же, с добавлением только target_id.

Спасибо!

1 Ответ

0 голосов
/ 27 мая 2020

Я предполагаю, что ваши условия join обратные:

select a.*, b.source_id as parent_id
from table a left join
     table b
     on b.source_name = a.target_name;

source_name выглядит уникально в вашей таблице, а не target_name.

Тем не менее, вы должны вообще не зависеть от name. Ваш «целевой» или «родительский» столбец должен ссылаться на id. Итак, ваша модель данных выглядит так, как будто ее можно исправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...