| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > MySql DELETE наивный вопрос |
| Автор: poh 31.10.2004, 00:12 |
| Не кидайте пожалуйста камни. вопрос наверное простой - но я никак не справлюсь. DELETE FROM table1 WHERE table1.id IN (SELECT table2.id FROM table2 WHERE table2.userid=12) ругается на синтаксис. поможите |
| Автор: Secandr 31.10.2004, 13:18 |
| В mysql стабильных версиях нет вложенных запросов. |
| Автор: iKo 2.11.2004, 18:50 |
| выдержка из мануала по mysql DELETE [LOW_PRIORITY] [QUICK] FROM table_name[.*] [, table_name[.*] ...] USING table-references [WHERE where_definition] Идея заключается в том, что удаляются только совпадающие строки из таблиц, перечисленных перед выражениями FROM или USING. Это позволяет удалять единовременно строки из нескольких таблиц, а также использовать для поиска дополнительные таблицы. Символы .* после имен таблиц требуются только для совместимости с Access: DELETE t1,t2 FROM t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id или DELETE FROM t1,t2 USING t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id В предыдущем случае просто удалены совпадающие строки из таблиц t1 и t2. Если применяется выражение ORDER BY (доступно с версии MySQL 4.0), то строки будут удалены в указанном порядке. В действительности это выражение полезно только в сочетании с LIMIT. Например: DELETE FROM somelog WHERE user = 'jcole' ORDER BY timestamp LIMIT 1 Данный оператор удалит самую старую запись (по timestamp), в которой строка соответствует указанной в выражении WHERE. Специфическая для MySQL опция LIMIT для команды DELETE указывает серверу максимальное количество строк, которые следует удалить до возврата управления клиенту. Эта опция может использоваться для гарантии того, что данная команда DELETE не потребует слишком много времени для выполнения. Можно просто повторять команду DELETE до тех пор, пока количество удаленных строк меньше, чем величина LIMIT. С MySQL 4.0 вы можете указать множество таблиц в DELETE чтобы удалить записи из одной таблицы, основываясь на условии по множеству таблиц. Однако, с такой формой оператора DELETE нельзя использовать ORDER BY или LIMIT так что вопрос решается |
| Автор: Secandr 2.11.2004, 20:57 | ||
|