sql >> データベース >  >> RDS >> Mysql

同じテーブル内のSUM()とCOUNT()を使用してテーブルを異なる列に更新する方法

    left joinからの更新値を使用してみてください (合計+カウント)テーブル

    update T T1
      left join (
        select `user`,sum(`sales`) newtotal,count(`order`) neworders
        from T
        group by `user`
      ) T2 on T1.`user` = T2.`user`
    set T1.total = T2.newtotal,T1.orders = T2.neworders
    

    テストDDL:

    CREATE TABLE T
        (`user` varchar(4), `sales` int, `order` varchar(7), `total` int, `orders` int)
    ;
    
    INSERT INTO T
        (`user`, `sales`, `order`, `total`, `orders`)
    VALUES
        ('xx01', 100, 'order01', 0, 0),
        ('xx02', 200, 'order02', 0, 0),
        ('xx02', 400, 'order03', 0, 0),
        ('xx03', 300, 'order04', 0, 0),
        ('xx03', 500, 'order05', 0, 0)
    ;
    

    結果:

    | user | sales |   order | total | orders |
    |------|-------|---------|-------|--------|
    | xx01 |   100 | order01 |   100 |      1 |
    | xx02 |   200 | order02 |   600 |      2 |
    | xx02 |   400 | order03 |   600 |      2 |
    | xx03 |   300 | order04 |   800 |      2 |
    | xx03 |   500 | order05 |   800 |      2 |
    

    テストデモリンク



    1. MySQL-メールメッセージとともに未読メッセージをクエリする

    2. node.js+mysql接続プール

    3. OracleデータベースでPL/SQLブロック・メンバーとしてVARRAYを作成する方法

    4. 多言語データベース設計のベストプラクティス