私はこのようなクエリを持っている:どのような条件が失敗するのかをどのように理解できますか?
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
これらの条件の時々1 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
条件の1つで更新の結合を手動で選択するだけで、更新するレコードがある場合に表示されます。 – sagi