ОК, я попробую:
1- Возможно, вы сделали опечатку в rcntrslt
, сделайте это так, и вы перечислите ее только один раз.
UPDATE `database`.holding
SET rcnt_rslts=TRUE
WHERE test_rcnt=TRUE
AND (rcntrslt IN ('pos','neg','indeterminate'));
2- =
может быть чувствительным к регистру, LIKE
никогда не бывает, попробуйте:
UPDATE `database`.holding
SET rcnt_rslts=TRUE
WHERE test_rcnt=TRUE
AND (rcntrslt LIKE 'pos' OR rcntrslt LIKE 'neg' OR rcntrslt LIKE 'indeterminate');
3 - Какие еще значения может иметь rcntrslt
, вы не можете отменить все тесты?
UPDATE `database`.holding
SET rcnt_rslts = TRUE
WHERE test_rcnt<>FALSE AND test_rcnt IS NOT NULL
AND (rcntrslt NOT IN ('othervalue','test1','gdsd')
AND rcntrslt IS NOT NULL;
4- Возможно, в rcntrslt
есть некоторое загрязнение, приводящее к появлению пробелов или других непечатаемых символов.
UPDATE `database`.holding
SET rcnt_rslts=TRUE
WHERE test_rcnt=TRUE
AND (rcntrslt LIKE '%pos%' OR rcntrslt LIKE '%neg%'
OR rcntrslt LIKE '%indeterminate%');
5- Если вы хотите выполнить отладку, вы всегда можете выполнить некоторые диагностические ВЫБОРЫ, чтобы увидеть, что происходит.
CREATE TABLE log (
id integer auto_increment not null primary key,
logtime timestamp,
reason varchar(255) not null,
tablename varchar(255) not null,
fieldnames varchar(10000) not null,
values varchar(10000) not null,
INDEX log_time (logtime),
INDEX log_table (tablename),
INDEX log_reason (tablename, reason)) ENGINE = InnoDB;
INSERT INTO log (reason, tablename, fieldnames, values)
SELECT
'all values','holding', 'test_rcnt,rcntrslt'
, CONCAT(IFNULL(test_rcnt,'NULL'), ',' ,IFNULL(rcntrslt,'NULL')
FROM holding;
INSERT INTO log (reason, tablename, fieldnames, values)
SELECT
'test_rcnt = TRUE','holding', 'test_rcnt,rcntrslt'
, CONCAT(IFNULL(test_rcnt,'NULL'), ',' ,IFNULL(rcntrslt,'NULL')
FROM holding
WHERE test_rcnt = TRUE;
и т. Д.
Теперь проверьте журнал, чтобы увидеть, что не так.