Lee Gunsoo
Lee Gunsoo

Reputation: 33

How to update multiple columns from different table of MariaDB

I am using MariaDB. I am trying to update two columns from SELECT different table.

UPDATE User U
SET 
    U.UserPoint = (
        SELECT  ((SELECT COUNT(*) 
                FROM CARD_COMM R
                WHERE R.Card_ID = C.Card_ID) * 3
                +
                (SELECT COUNT(*)
                FROM SECTION_CARD_LIKE L
                WHERE L.Card_ID = C.Card_ID) * 1) as userPoint
                FROM CARD C WHERE C.userid = U.userid ORDER BY userPoint DESC limit 1 )

this works

UPDATE User U
SET 
    (U.UserPoint, U.Card) = (
        SELECT  ((SELECT COUNT(*) 
                FROM CARD_COMM R
                WHERE R.Card_ID = C.Card_ID) * 3
                +
                (SELECT COUNT(*)
                FROM SECTION_CARD_LIKE L
                WHERE L.Card_ID = C.Card_ID) * 1) as userPoint,
                C.Card_ID as card
                FROM CARD C WHERE C.userid = U.userid ORDER BY userPoint DESC limit 1 )

but this dose not....

How do I do this?? please help me...

Upvotes: 1

Views: 2583

Answers (1)

Rick James
Rick James

Reputation: 142298

Use a multi-table update, something like

UPDATE User
    JOIN ( SELECT userid, up_value, card_value ... ) AS x
        ON x.userid = User.userid
    SET User.UserPoint = x.up_value,
        User.Card = x.card_value;

(With suitable expressions/subqueries/etc for up_value & card_value)

You seem to be updating all rows in User??

Upvotes: 2

Related Questions