0

負の数のクエリを使用して、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 フィールドは常に空になります:/

4

1 に答える 1

1

セットを「常に真」の条件に組み込みます。

CASE
  WHEN something >= 50
    AND IF(something >= 50, (@variable:='setted yay'), '') IS NOT NULL
  THEN 50
于 2013-07-30T22:56:15.153 に答える