![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Избавление от селекта внутри делете [MySQL]
VictorT © (2004-01-27 19:55:00)
Нужно сделать запрос такого вида, но к сожалению MySQL не поддерживает select внутри delete, как его можно переформулировать?
delete from table1
where field1 in (select field1 from table2)
Sandman25 (2004-01-28 11:12:00) [1]
[6] Johnmen © (28.01.04 10:38)
А если записей милльон? :)
VictorT (2004-01-28 11:05:00) [2]
> Так ответ сам автор вопроса уже дал...
Только вот автор вопрос вначале неправильно задал :)
Johnmen (2004-01-28 10:38:00) [3]
Так ответ сам автор вопроса уже дал...VictorT © (27.01.04 21:02) [3]
:)))
Sandman25 (2004-01-28 09:59:00) [4]
У меня дикая идея.
Делаете новую таблицу table3 (копия table1, включая данные), затем
delete table3
from table3, table2
where table3.field1 = table2.field1;
и
delete table1
from table1, table3
where table1.field1 = table3.field1
Потребуется куча памяти, но не будет ограничения на число записей.
Nikolay M. (2004-01-28 09:18:00) [5]
> Это ж какая переменная получится... в таблицах порядка 30
> тысяч записей
10 000 в IN пролетает на ура. Если там ID, конечно, а не Name VARCHAR(255) :)
VictorT (2004-01-27 21:02:00) [6]
> список значений через запятую в стринговой переменной
Это ж какая переменная получится... в таблицах порядка 30 тысяч записей
VictorT (2004-01-27 21:00:00) [7]
Блин, вопрос непавильно поставил. Мне нужно:
delete from table1
where field1 not in (select field1 from table2)
А первый случай реализуется так:
delete table1
from table1, table2
where table1.field1 = table2.field1
Nikolay M. (2004-01-27 20:46:00) [8]
Только двумя запросами :(
Сначала позапросом получаешь список значений через запятую в стринговой переменной, потом удаляешь
DELETE FROM table1 WHERE field1 IN (value1, value2, ... , valueN)