2016-10-14 7 views
0

私はMariaDBを使用しています。 SELECTの異なるテーブルから2つの列を更新しようとしています。MariaDBの別のテーブルから複数の列を更新するには

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) 

これは

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) 

が、この用量ではない....私はこれを行うにはどうすればよい

に動作します? 私を助けてください...

+0

あなたは何をしたいのか分かりませんか?最初の例では、1つの列に1つの値を挿入します。 2番目の例では同じものを試しますが、2つの列を指定して1つの値のみを指定します。 –

答えて

0

使用マルチテーブルの更新、

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; 

のようなもの(適した表現/サブクエリでは/ etc up_value & card_value用)は

あなたはすべての更新をしているように見えますユーザーの行?

関連する問題