@Angelxalfa

Как выборочно удалить строки из таблицы MySQL?

Добрый день! Нужно удалить строки выборочно, так чтобы то, что во втором условии осталось.
При выполнении код удаляется все строки, где в поле baza содержится test. То есть второе условие просто игнорируется.
DELETE FROM $table WHERE baza = 'test' AND (
	(street != 'Советская' AND house_number != '79') AND 
	(street != 'Карбышева' AND (house_number != '37' OR house_number != '60')) AND
	(street != 'Набережная' AND house_number != '75') AND 
	(street != 'Ленина' AND (house_number != '119' OR house_number != '160')) AND
	(street != 'Энгельса' AND house_number != '29') AND 
	(street != 'Площадь Труда' AND house_number != '13') AND 
	(street != 'Химиков' AND house_number != '6'))
  • Вопрос задан
  • 418 просмотров
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Правила булевой алгебры:
A | B | C = (A | B) | C = A | (B | C)
A & B & C = (A & B) & C = A & (B & C)
(A & B) | (A & C) = A & (B | C)
(A | B) & (A | C) = A | (B & C)
!(A & B) = (!A) | (!B)
!(A | B) = (!A) & (!B)

Чтобы оставить выбранные адреса, надо сформулировать условие
NOT (street = 'Советская' AND house_number = '79') 
AND NOT (street = 'Карбышева' AND house_number = '37')
AND  NOT (street = 'Карбышева' AND house_number = '60')
...

приводим по шагам:
(street != 'Советская' ОR house_number != '79') 
AND (street != 'Карбышева' OR house_number != '37')
AND (street != 'Карбышева' OR house_number != '60')
...

(street != 'Советская' ОR house_number != '79') 
AND (street != 'Карбышева' OR (house_number != '37' AND house_number != '60'))
...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы