負の数のクエリを使用して、mysql db をチェックおよび更新しようとしています。ユーザーから渡された動的な値があり、Db に格納された結果が制限に達すると、固定値で別のテーブルを更新します。
私が最も気になるのは次のことです.THENの後にフィールドを更新し、セッション変数を更新することは可能ですか?
WHEN(something) >= 50 THEN 50 AND @variable='setted yay'
事前に情報をありがとう。
編集:
わかりました、あなたのアドバイスを念頭に置いてクエリを更新しようとしています。ここに結果があります。
SET @ord:='prova';
UPDATE Users, Table2
SET Table2.field= CASE
WHEN(Table2.field + 5) >= 50 AND IF( (Table2.field + 5) >= 50, (@ord='YAY GOOD'), '') IS NOT NULL
THEN 50
WHEN(Table2.field + 5) <= -50 AND IF( (Table2.field + 5) <= -50, (@ord='YAY BAD'), '') IS NOT NULL
THEN -50
ELSE (
CASE
WHEN(Table2.field + 5) > 25 AND IF( (Table2.field + 5) > 25, (@ord='YAY GOOD'), '') IS NOT NULL
THEN (Table2.field + 5)
WHEN(Table2.field + 5) < -25 AND IF( (Table2.field + 5) < -25, (@ord='YAY BAD'), '') IS NOT NULL
THEN (Table2.field + 5)
**ELSE (Table2.field+ 5 AND @ord:='YAY EQUILIBRIUM')**
END
)
END,
users.newalign= @ord
WHERE Table2.id = '338' AND users.id_user = Table2.id
明らかに、値5は、SQLが正しく実行されたかどうかを確認するために使用する単なる例です。
しかし今、私は2つの問題に遭遇しました。
1)ELSEコマンドをそのように受け入れないようです。おそらく何かで失敗します。2) @ord を新しい変更に渡すことができません。クエリがエラーなしで実行されると、newalign フィールドは常に空になります:/