0

I have added a new JSON Data type column (bill_plans)in my table . Now I want to update the bill_plans column like this

[{ "cycle": 1, "fee": 1000}, { "cycle": 3, "fee": 2800}, { "cycle": 10, "fee": 10000} ]

I was successful in creating the column and I was able to update the bill_plans columns also.

The table contains bill_cycle and fees also as an existing column so I want to update the bill_plans column something like this

[{ "cycle": value from the bill_cycle column, "fee": value from the fees column}, { "cycle": value from the bill_cycle column, "fee": value from the fees column}]

the simple update query is something like this

update  coaching_class_entries set bill_plans =  ('[{"cycle": 1, "fee": 1000}]') where id = 1;

But now I am not able to understand how to update the bill_plans from the existing columns of the table

Faysal Ahmed
  • 7,501
  • 5
  • 28
  • 50
vicks
  • 13
  • 4

1 Answers1

3

MySQL has predefined functions to perform operations on JSON Arrays and Objects.

You can use the below query to achieve your result.

Method 1 Using general syntax

UPDATE coaching_class_entries     
  SET bill_plans = '[ {"cycle": 1, "fee": 1000 } ]'

In this case you may need to update the values as per the data in columns. You can use CONCAT operator to form the json string

UPDATE coaching_class_entries     
  SET bill_plans = CONCAT('[{"cycle":"', bill_cycle, '","fee":"', fees, '"}]')

Method 2 Using JSON Functions

UPDATE coaching_class_entries     
  SET bill_plans = JSON_ARRAY(JSON_OBJECT("cycle", bill_cycle, "fee", fees))

You can refer to the complete docs here https://dev.mysql.com/doc/refman/5.7/en/json.html

Ram Babu
  • 2,692
  • 3
  • 23
  • 28