У меня есть запрос, как это:Как я могу понять, какое условие терпит неудачу?
UPDATE table1 t1
JOIN table2 t2
ON t1.col1 = t2.col2
SET t1.col3 = "something"
WHERE t1.col4 = t2.col3 AND
t1.col5 IS NOT NULL
Иногда один из этих условий на пункте WHERE
является FALSE
, а затем обновляет ничего. Я пытаюсь понять, почему ничего не обновляется? Я имею в виду, что я хочу установить ошибку для каждого условия, чтобы указать мне, какое условие - FALSE
.
Я не уверен, но, возможно, используя @variable
или используя CASE WHEN
, был бы подход. Есть ли решение?
Мой запрос в реальности:
UPDATE
qanda AS ans1
JOIN qanda AS ans2 ON ans2.related = ans1.related
JOIN qanda AS ques ON ans2.related = ques.id
SET ans1.acceptedanswer = IF(ans1.id <> ?, 0, IFNULL(ans1.acceptedanswer, 0)^b'1'),
ans1.aadate = IF(ans1.id <> ?, ans1.aadate, ?)
WHERE ques.author_id = ?
AND ans2.id = ?
AND ans2.author_id = ?
AND (ques.amount IS NULL or ans1.acceptedanswer IS NULL
Я не понимаю вопроса, что бы вы хотели получить в качестве выхода? Что такое половина записей, «col5 is null», а другая половина терпит неудачу при первом условии? – sagi
@sagi Если что-то обновляется, мне ничего не нужно. Но если обновление не выполняется (ничего не обновляется). то мне нужно знать, почему это не удается? – stack
Просто вручную выберите соединение обновления с одним из условий, вы увидите, есть ли записи для обновления. – sagi