yolga
@yolga
Постигающий

Дублирование в LEFT JOIN, как исправить?

Привет, всех с наступающим!

Запутался. Надо объединить две таблицы, ratings и keywords, по столбцам movieid , используя левое объединение. Провести двумя способами: с помощью LEFT JOIN в строке запроса к БД и с использованием метода merge в pandas.

Результат объединения в pandas:

df2 = pd.read_sql('SELECT DISTINCT * FROM ratings', connect)

df3 = pd.read_sql('SELECT DISTINCT * FROM keywords', connect)

dm = df2.merge(df3, how='left', left_on='movieid', right_on='movieid')

Output: | userid | movieid | rating | timestamp | tags |

Результат в SQL:
df1 = pd.read_sql('SELECT DISTINCT * FROM ratings 
LEFT JOIN keywords ON ratings.movieid = keywords.movieid', connect)

Output: | userid | movieid | rating | timestamp | movieid | tags |

Дублируются столбцы movieid.
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
BojackHorseman
@BojackHorseman Куратор тега SQL
...в творческом отпуске...
так вы же написали "*"

этот символ называется asterisk и в данном случае обозначает все столбцы объединения. а movieid, естественно, присутствует в обеих таблицах. не хотите, чтобы они дублировались, укажите явно, из какой таблицы он должен попасть в результат, перечислив все необходимые столбцы в результирующем наборе.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы