Я использую Amazon Redshift, где у меня есть две таблицы.Промежуточная таблица, в которую я копирую все данные из S3, и целевая таблица, в которую все должно быть в конечном итоге вставлено.
Теперь у меня есть запрос, который должен удалить все из целевой таблицы, которая находится в промежуточной таблице, чтобы я выиграл 'не может иметь дубликатов.
DELETE FROM xschema.target
WHERE (col1, col2) IN
(
SELECT col1, col2
FROM xschema.staging
)
AND col3 = 'de'
;
Запрос выполняется, но удаляет все, где col3 = 'de'
имеет значение true.Условие IN
оператора всегда возвращает true.
Например: если в моей целевой таблице есть следующие значения
col1 | col2 | col3 | col4
aaa | 1 | de | 100
bbb | 2 | de | 200
ccc | 1 | us | 180
И в моей промежуточной таблице следующие значения:
col1 | col2 | col3 | col4
aaa | 1 | de | 100
ddd | 1 | de | 250
И я запускаю запрос выше, чтобы удалить все значения в целевой таблице из промежуточной таблицы, которые я получаю:
col1 | col2 | col3 | col4
ccc | 1 | us | 180
, но я ожидаю:
col1 | col2 | col3 | col4
bbb | 2 | de | 200
ccc | 1 | us | 180
Пока я не нашел ничего ни в официальной документации, ни здесь (по крайней мере, для красного смещения).Любые идеи о том, как это решить?
Редактировать: Добавлены примеры