Как удалить с помощью 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...'

Затем, как описано выше, существуют различные опции для выбора записей, которые должны быть удалены. Лично я склонен использовать метод "ГДЕ.. В..(ВЫБРАТЬ...)", так как считаю, что он более понятен и поэтому легче поддерживать.

Другие вопросы по тегам