2017-02-16 93 views
0

我們有'jsonData'列(longtext)中包含JSON的Student表。 我們需要改變json中「isHandicapped」字段的值。如何在MySQL中的JSON條件更新字段?

結構

{ 
    "data": { 

    "schoolData": { 

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

舊數據: 「isHandicapped」:假

新價值: 「isHandicapped」: 「NO」

這應該是有條件更新至於真的,我們需要改變價值

舊數據: 「isHandicapped」:真

新價值: 「isHandicapped」: 「JA」

主表的字段是ID。

我得到了下面的SQL查詢的相同,但無法瞭解如何添加有條件更新,如果值是true放JA別的NO:

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 SET學生$ .isHandicapped = 'NO' WHERE JSON_SEARCH(數據「, '$ 「數據」。 「schoolData」。 「studentListe」[*]。 「isHandicapped」='假'; 或 其中JSON_EXTRACT(data,「'。」data「。」schoolData「。」studentListe「[*]。」studentId「)= 111749 –