Простая задача: как удалить несколько строк MySQL одним запросом?

Страшный Злодей

Бывший член клуба (достало хамство).
Простая задача: как удалить несколько строк MySQL одним запросом?

Простите за ламерский вопрос. Для удаления нескольких строк из таблицы по нескольким конкретным значениям всегда использую что-то типа:
DELETE FROM `columnname` WHERE `rowvalue` = 'somevalue1';
DELETE FROM `columnname` WHERE `rowvalue` = 'somevalue2';
DELETE FROM `columnname` WHERE `rowvalue` = 'somevalue3';
...
А можно ли это сделать одним запросом?
Что-то типа:
DELETE FROM `columnname` WHERE `rowvalue` VALUE ('somevalue1', 'somevalue2', 'somevalue3', ...) ; ?
 

Страшный Злодей

Бывший член клуба (достало хамство).
Gremboloid
Cпасибо! Это для меня открытие :) Странно, что ни где раньше не встречал я этой конструкции, ни в одном из прочитанных мною руководств.
 

Страшный Злодей

Бывший член клуба (достало хамство).
Ещё вопрос по этой же теме:
А можно тогда как-нибудь "силами" MySQL обработать массив данных? Не прибегая к foreach и пр. в PHP?
Например:
DELETE FROM `columnname` WHERE `rowvalue`IN (array('somevalue')); ?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
-~{}~ 20.11.07 22:29:

Страшный Злодей
Можно
Октройте для себя мануал - Array Functions
 

Страшный Злодей

Бывший член клуба (достало хамство).
Понимаю... по этому и просил прощения за ламерство, перед тем как задать вопрос :)

-~{}~ 20.11.07 23:34:

Автор оригинала: Mr_Max
-~{}~ 20.11.07 22:29:

Страшный Злодей
Можно
Октройте для себя мануал - Array Functions
Если это те которые из PHP, типа 'mysql_fetch_array()', то не интересно. А если в MySQL, то посмотрю конечно, спасибо.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Страшный Злодей
Если это те которые из PHP, типа 'mysql_fetch_array()
Может хватит в догадки играть?
http://www.php.net/manual/en/index.php
Ctrt+F3
Array Functions

-~{}~ 20.11.07 22:39:

Раздача бесплатных слонов? :)
 

Страшный Злодей

Бывший член клуба (достало хамство).
Апокалипсис
А что-бы без PHP, средствами самого MySQL? В смысле чтобы просто пихать туда массив и пускай MySQL сам "разбирается"?
 

Апокалипсис

тех дир matras.ru
Раздача бесплатных слонов?
ну пускай человек почитает что эти ф-ции делают:)

Страшный Злодей
В данном случае нет. Объясни как ты в mysql собрался массив из пхп пихать не превратив его в строку ?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
ну пускай человек почитает что эти ф-ции делают
Слабо верится.

Если б человек читал мануал
DELETE FROM `columnname` WHERE `rowvalue` = 'somevalue1';
DELETE FROM `columnname` WHERE `rowvalue` = 'somevalue2';
DELETE FROM `columnname` WHERE `rowvalue` = 'somevalue3';
Это бы звучало как минимум в виде.
DELETE FROM `columnname` WHERE `rowvalue` = 'somevalue1' OR`rowvalue` = 'somevalue2' OR `rowvalue` = 'somevalue3';

Читал внимательно - с коментариями - вопрос вообще не возник.

-~{}~ 20.11.07 22:47:

Прошу прощения за офтоп.
 

Страшный Злодей

Бывший член клуба (достало хамство).
Mr_Max
ИМХО
DELETE FROM `columnname` WHERE `rowvalue` = 'somevalue1' OR`rowvalue` = 'somevalue2' OR `rowvalue` = 'somevalue3';
не сильно отличается от того, что я написал. Такую конструкцию тоже использовал ранее. Просто для наглядности трабла кинул в своей редакции.
Извините за оффтоп...
 

SiMM

Новичок
> DELETE FROM `columnname` WHERE `rowvalue` = 'somevalue1' OR`rowvalue` = 'somevalue2' OR `rowvalue` = 'somevalue3'; не сильно отличается от того, что я написал.
Фигасе.
> А можно ли это сделать одним запросом?
 

dimagolov

Новичок
про массивы в MySQL

в хранимых процедурах можно объявлять CURSOR которым будет запрашиваться набор строк. потом по этому набору можно создавать цикл и производить в цикле некоторые действия, которые не получается запихнуть в один запрос без подзапросов безумных. В основном это имеет смысл для update, когда каждую строку надо изменять по-разному, так как к примеру INSERT можно делать из SELECTа, а DELETE и вовсе в WHERE можно все что угодно вписать, любой набор условий сделать.

-~{}~ 20.11.07 17:42:

Страшный Злодей, может для тебя будет открытие, но конструкции
field IN (val1, val2, ... valN) и
fild = val1 OR fild = val2 OR ... fild = valN
отличаются только формой записи, а с точки зрения семантики абсолютно идентичны
 

Craelfar

Новичок
Где то слышал что in лучше не использовать при количестве элементов больше 256 ибо слетают индексы. Это так?
 

SiMM

Новичок
> Где то слышал что in лучше не использовать при количестве элементов больше 256 ибо слетают индексы. Это так?
Интересно, почему слышали Вы это где-то, а вопрос задаёте здесь? Спросите у тех, кто это сказал, а не будьте разносчиком слухов.
 
Сверху