я должен удалить данные из определенной таблицы, поэтому я использую следующий запрос:Удаления запроса путем объединения двух таблиц в экономически эффективном способе
delete from table_a
where objectname in
(Select object_name from table_b where resolved='Y');
Теперь Select object_name from table_b where resolved='Y'
запроса будет возвращать более 4 миллионов записей и, следовательно, потребуется много времени для выполнения. Я пытаюсь написать его более экономичным способом.
DELETE FROM table_a
WHERE EXISTS (SELECT 1 FROM table_b WHERE object_name= objectname AND RESOLVED = ‘Y’)
AND ROWNUM < 10000;
Но, кажется, ошибка:
SQL Error: ORA-00911: invalid character 00911. 00000 - "invalid character" *Cause: identifiers may not start with any ASCII character other than letters and numbers. $#_ are also allowed after the first character. Identifiers enclosed by doublequotes may contain any character other than a doublequote. Alternative quotes (q'#...#') cannot use spaces, tabs, or carriage returns as delimiters. For all other contexts, consult the SQL Language Reference Manual.
Пожалуйста, помогите!
* «кажется, ошибка» * Какая ошибка у вас есть? –
Ошибка SQL: ORA-00911: недопустимый символ 00911. 00000 - «недопустимый символ» * Причина: идентификаторы могут не начинаться с любого символа ASCII, кроме букв и цифр. $ # _ также допускаются после первого символа . Идентификаторы, заключенные двойными кавычками, могут содержать любой символ, отличный от двойного. Альтернативные котировки (q '# ... #') не могут использовать пробелы, табуляции или возврат каретки как разделители . Для всех других контекстов обратитесь к Справочнику по языку SQL . – Ankit
Возможно, из-за смешных цитат: '' Y''. Попробуйте использовать '' Y'', как в первом примере. –