我有許多包含對象字符串數組json的列的表。在MySQL中刪除字符串json數組中的元素
我需要從這些數組中刪除幾個元素。 我發現如何從一行中刪除元素,但是如何在多行上執行它?
對於一行,我使用json_search來查找必須刪除的元素,但我有許多行和許多要刪除的元素。有沒有辦法做到這一點沒有存儲過程(while循環)?
這是數據的樣本:
-------------------------------------------------------------------
id | DATA |
-------------------------------------------------------------
1 | {"array":[{"a":"a","b":"b","c":"c"},{"b":"b","c":"c"}]}|
------------------------------------------------------------
2 | {"array":[{"b":"b","c":"c","f":"f"},{"b":"b","c":"c","d":"d"}]}|
-------------------------------------------------------------------
3 | {"array":[{"a":"a","b":"b","c":"c"},{"g":"g","ff":"ff"}]}|
4 | {"array":[{"q":"q"},{"g":"f","e":"e"}]}|
我需要從contans a
和/或g
我的查詢中的每個array
僅除去內容是:
UPDATE MY_TABLE
SET DATA = JSON_REMOVE(
DATA,
REPLACE(JSON_SEARCH(
(SELECT DATA WHERE DATA LIKE "%a%"),
'all',
"%a%"
),
'"',
'')
) WHERE DATA LIKE "%a%";
我發現如何更新所有列的方式,但此查詢只刪除json字段,而不是整個對象。我怎樣才能刪除整個對象?
'UPDATE'查詢將更新所有與WHERE條款匹配的行。所以你只需要使用一個匹配你想要更新的所有行的WHERE條件。 – Barmar
我需要從字符串的json數組中刪除特定的對象。 – Squeez
我明白這一點。它將從所有符合'WHERE'條件的行中移除。你爲什麼認爲它只會從一行中刪除? – Barmar