2017-02-16 9 views
0

JSONが 'jsonData'列(longtext)に含まれているStudentテーブルがあります。 jsonの "isHandicapped"フィールドの値を変更する必要があります。MySQLのJSONの条件付き更新フィールドの方法は?

構造

{ 
    "data": { 

    "schoolData": { 

     "studentListe": [ 
     { 
      "student": { 
      "studentId": 111749, 
      "isHandicapped": false 
      } 
     } 
     ], 
    }, 
    } 
} 

古いデータ: "isHandicapped":偽

新しい値: "isHandicapped": "NO"

これは、条件付き更新する必要があります真の場合は値を変更する必要があります

古いデータ: "isHandicapped":真

新しい値: "isHandicapped":表の "ジャ"

プライマリフィールドがIDです。

私は同じですが、値が他の真プットジャNOである場合という条件付きの更新を追加する方法を理解することができませんでし用のSQLクエリを次しまっ:

update Student 
set data = JSON_SET(data, "'$."data"."schoolData"."studentListe"[*]."isHandicapped", "?") 
where id = 2; 

答えて

0

update文は、トリックを行いますが:

UPDATE Student 
SET $.isHandicapped= CASE   
        WHEN JSON_EXTRACT(data, "'$."data"."schoolData"."studentListe"[*]."isHandicapped")='false' 
        THEN 'NO' 
        ELSE 'Ja' end 
WHERE id=2; 
+0

studentListe内の複数の値に対して機能していません – fatherazrael

+1

UPDATE Student SET $ .isHandicapped = 'NO' ここで、JSON_SEARCH(data、 "'$。" "schoolData"。 "studentListe" [*]。 "isHandicapped" =' false '; または ここで、JSON_EXTRACT(data、 "'$。" data "。" schoolData "。" studentListe "[*]。" studentId ")= 111749 –