'Using Select to Update based on the selected value

I have written a SQL query which gets me the data I want (Yes I know its not pretty),

SELECT characters.id AS ID, (SELECT CONCAT(
    '[{"license":"Weapon","issuedDate":"","issuedBy":"","issued":', 
    (SELECT user_licenses.`status` FROM user_licenses WHERE user_licenses.cid = ID AND user_licenses.`type` = "Weapon" LIMIT 1), 
    '},{"license":"Hunting","issuedDate":"","issuedBy":"","issued":', 
    (SELECT user_licenses.`status` FROM user_licenses WHERE user_licenses.cid = ID AND user_licenses.`type` = "Hunting" LIMIT 1), 
    '},{"license":"Business","issuedDate":"","issuedBy":"","issued":', 
    (SELECT user_licenses.`status` FROM user_licenses WHERE user_licenses.cid = ID AND user_licenses.`type` = "Business" LIMIT 1)
    , '},{"license":"Drivers","issuedDate":"","issuedBy":"","issued":', 
    (SELECT user_licenses.`status` FROM user_licenses WHERE user_licenses.cid = ID AND user_licenses.`type` = "Drivers" LIMIT 1), 
    '},{"license":"Fishing","issuedDate":"","issuedBy":"","issued":', 
    (SELECT user_licenses.`status` FROM user_licenses WHERE user_licenses.cid = ID AND user_licenses.`type` = "Fishing" LIMIT 1)
    , '},{"license":"Bar","issuedDate":"","issuedBy":"","issued":', 
    (SELECT user_licenses.`status` FROM user_licenses WHERE user_licenses.cid = ID AND user_licenses.`type` = "Bar" LIMIT 1)
    , '},{"license":"Pilot","issuedDate":"","issuedBy":"","issued":', 
    (SELECT user_licenses.`status` FROM user_licenses WHERE user_licenses.cid = ID AND user_licenses.`type` = "Pilot" LIMIT 1)
    , '}]')) AS Info FROM characters

which produces a table similar to

ID Info
1 [{"license":"Weapon","issuedDate":"","issuedBy":"","issued":1},{"license":"Hunting","issuedDate":"","issuedBy":"","issued":1},{"license":"Business","issuedDate":"","issuedBy":"","issued":1},{"license":"Drivers","issuedDate":"","issuedBy":"","issued":1},{"license":"Fishing","issuedDate":"","issuedBy":"","issued":1},{"license":"Bar","issuedDate":"","issuedBy":"","issued":0},{"license":"Pilot","issuedDate":"","issuedBy":"","issued":0}]
2 [{"license":"Weapon","issuedDate":"","issuedBy":"","issued":1},{"license":"Hunting","issuedDate":"","issuedBy":"","issued":0},{"license":"Business","issuedDate":"","issuedBy":"","issued":1},{"license":"Drivers","issuedDate":"","issuedBy":"","issued":1},{"license":"Fishing","issuedDate":"","issuedBy":"","issued":1},{"license":"Bar","issuedDate":"","issuedBy":"","issued":0},{"license":"Pilot","issuedDate":"","issuedBy":"","issued":0}]
3 [{"license":"Weapon","issuedDate":"","issuedBy":"","issued":0},{"license":"Hunting","issuedDate":"","issuedBy":"","issued":0},{"license":"Business","issuedDate":"","issuedBy":"","issued":0},{"license":"Drivers","issuedDate":"","issuedBy":"","issued":1},{"license":"Fishing","issuedDate":"","issuedBy":"","issued":1},{"license":"Bar","issuedDate":"","issuedBy":"","issued":0},{"license":"Pilot","issuedDate":"","issuedBy":"","issued":0}]

etc.

How can I then update the characters table so for every ID from the above table the license column gets set to the Info from the table?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source