Сталкивался ли с Anti JOIN
Python
Junior
Без компании
Сталкивался ли с Anti JOIN
Ответы
Да, сталкивался. Anti JOIN — это операция, которая возвращает записи из первой таблицы, для которых нет совпадений во второй таблице. В SQL это реализуется через `LEFT JOIN` с проверкой `IS NULL` или через `NOT EXISTS`.
В Python с pandas аналогичный результат достигается через `merge` с индикатором или `isin` с отрицанием:
```
# Пример с pandas
import pandas as pd
df1 = pd.DataFrame({'id': [1, 2, 3]})
df2 = pd.DataFrame({'id': [2, 3, 4]})
# Вариант 1: через merge с indicator
anti_join = df1.merge(df2, on='id', how='left', indicator=True)
anti_join = anti_join[anti_join['_merge'] == 'left_only'].drop('_merge', axis=1)
# Вариант 2: через isin
anti_join = df1[~df1['id'].isin(df2['id'])]
```
В SQLAlchemy можно использовать `NOT EXISTS` или `EXCEPT`.