1
現在の行の列c1が前の行のc1と等しい場合、列c3を前の行の列c2に設定します。それ以外の場合は、c3をNULLに設定します(または何も設定しないでください)。誰かがなぜ次のクエリの結果がc3がすべての行に対してnullであるのかを教えてもらえますか?mysql:別の列の値に基づいて前の行の値に列を設定します
ダミー列は、次の行に使用されるこの行のc1とc2の値を格納する変数@ c1と@ c2を設定できるだけの場所です。ところで、私はc3が最初に更新されると仮定して間違っていますか?すなわち、@ c2が前の値を取得する(@ c2が現在のc2に割り当てられる前に)でしょうか?
UPDATE t SET c3 = IF (c1 = @c1, @c2, NULL), dummy1 = @c1:=c1, dummy2 = @c2:=c2;
はい、私は完全に秩序を忘れていました。 - 「ORDER BY id、c1」が私のために働いていました!ダミー列を必要としないことについての良い点。ありがとう! – Yury
「ORDER BY id」だけでは私のために何もしないのですか? AFAIKでは、どちらの列にもヌルがありません(すでにシャットダウンされていますが、午前中にチェックされます)。 – Yury
各id値には複数の行があるため、同数があり、同じIDを持つ行の順序は予測できません。申し訳ありませんが私は私の答えでそれを忘れました。 –