MySql несколько операторов удаления - PullRequest
0 голосов
/ 20 марта 2019

Я не смог найти ничего здесь или Google, который работает для меня.

Я попробовал следующий код:

delete from wms where barcode = '65025351102908' and '105077351106577';

значения имеют в виду varchar.

Нет ошибок, но затронуто 0 строк.Но они определенно там.

Ответы [ 3 ]

4 голосов
/ 20 марта 2019

Ваше предложение WHERE работает не так, как вы ожидаете.Вы не можете учесть условия таким образом

Запись этого приведет к удалению только 65025351102908:

WHERE barcode = '65025351102908' and '105077351106577';
--    ^------------------------^     ^---------------^
--          Condition 1                 Condition 2 (always true because different than a falsy value)

Полагаю, вы хотите удалить и 65025351102908, и 105077351106577

Это делается с помощью ИЛИ (удалите, где идентификатор равен первому ИЛИ второму)

Попробуйте вместо этого:

delete from wms where barcode = '65025351102908' or barcode = '105077351106577';

Если у вас много открытого кодачтобы удалить, вы можете использовать оператор IN:

delete from wms where barcode IN ('65025351102908', '105077351106577');
1 голос
/ 20 марта 2019

Вы пытаетесь удалить две строки с этими двумя значениями?

Тогда сделайте это:

delete from wms 
where (barcode = '65025351102908') or (barcode = '105077351106577');

Вы также можете сделать это:

delete from wms 
where barcode in ('65025351102908','105077351106577');
0 голосов
/ 20 марта 2019

Если вы хотите удалить «между» этими значениями (имея в виду, что вы пишете их в одинарных кавычках в виде строки), ваш синтаксис может быть лучше следующим:

delete from wms where barcode BETWEEN  '65025351102908' and '105077351106577';
...