Как удалить с помощью Join EXASol
Я хочу удалить некоторые записи из таблицы, используя Join в EXAsol.
Я стараюсь -
Delete tran
FROM
Transactions tran
INNER JOIN
Employees e
ON tran.ID = e.Transaction_ID
WHERE e.Name = 'Abhisar';
Я получаю ошибку -
syntax error, unexpected identifier_chain2, expecting FROM_ or '*' [line 1,column 8]
2 ответа
Решение
DELETE FROM tab1 a
WHERE EXISTS (SELECT 1 FROM tab2 b WHERE a.id=b.id);
Это так же хорошо, как JOIN и использует индекс внутри. Вы можете проверить это, если включите профилирование и проверьте его после выполнения запроса.
Исходное сообщение об ошибке происходит из-за 'TRAN', следующего сразу за 'DELETE' - см. Руководство пользователя Exasol - единственными допустимыми параметрами ANSI SQL для DELETE являются 'DELETE FROM..' или 'DELETE * FROM...'
Затем, как описано выше, существуют различные опции для выбора записей, которые должны быть удалены. Лично я склонен использовать метод "ГДЕ.. В..(ВЫБРАТЬ...)", так как считаю, что он более понятен и поэтому легче поддерживать.