Я хочу удалить некоторые записи из таблицы, используя Присоединиться в 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]
1
Abhisar Garg 25 Сен 2018 в 13:51

2 ответа

Лучший ответ
DELETE FROM tab1 a 
WHERE EXISTS (SELECT 1 FROM tab2 b WHERE a.id=b.id);

Это так же хорошо, как JOIN, и внутренне использует индекс. Вы можете проверить это, если включите профилирование и проверите его после выполнения запроса.

1
wildraid 25 Сен 2018 в 21:52

Исходное сообщение об ошибке возникает из-за того, что «TRAN» следует сразу за «DELETE» - см. Руководство пользователя Exasol - единственные допустимые параметры ANSI SQL для DELETE - «DELETE FROM ..» или «DELETE * FROM ...»

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

0
Dave S 26 Сен 2018 в 08:47