Я могу легко найти нужные мне строки с помощью этих операторов SQL:
SELECT COUNT(*) FROM `individuals` WHERE `company_zip` != '';
SELECT COUNT( * ) FROM `individuals` WHERE length( `company_zip` ) > 0;
SELECT COUNT( * ) FROM `individuals` WHERE strcmp( `company_zip`, '' ) != 0;
И, вероятно, есть еще 100 способов сделать это.
Однако ...
Попробуйте использовать их в выражении UPDATE
UPDATE `individuals` SET `company_country` = 1 WHERE `company_zip` != '';
UPDATE `individuals` SET `company_country` = 1 WHERE length( `company_zip` ) > 0;
UPDATE `individuals` SET `company_country` = 1 WHERE strcmp( `company_zip`, '' ) != 0;
И я получаю такие ответы:
0 row(s) affected. ( Query took 0.5920 sec )
Признаюсь, я устал от просмотра страниц справочника и поисков в Google, чтобы понять этоиз.Какой принцип mysql мне здесь не хватает?В операторе SELECT легко сосчитать строки, но те же критерии не работают для оператора UPDATE.Это ошибка?
Черт!Я понял это перед публикацией.Так что я дам любой интересующийся ответ.Я случайно добавил поле company_country
со значением по умолчанию 1, и поэтому все записи получили значение по умолчанию '1'.Таким образом, mysql пытался обновить поля, но обнаружил, что они уже были установлены на 1. Очищение их позволило запросам UPDATE работать.Не берите в голову.Отправка для тех, кто делает аналогичную ошибку.
Брэдли