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

mysql-他の行に基づいて行を更新する

    もちろん、1つのクエリでそれを行うことができます。このサンプルテーブルの使用:

    create table duotri (time varchar(100), type int, genre int, doubles int, triples int);
    insert duotri values
    ('2010.06.21 12:00'    ,1        ,1        ,0            ,0),
    ('2010.06.21 12:00'    ,1        ,2        ,0            ,0),
    ('2010.06.21 12:00'    ,1        ,1        ,0            ,0),
    ('2010.06.21 12:00'    ,2        ,3        ,0            ,0),
    ('2010.06.22 12:00'    ,2        ,2        ,0            ,0),
    ('2010.06.22 12:00'    ,2        ,3        ,0            ,0),
    ('2010.06.22 12:00'    ,1        ,1        ,0            ,0);
    

    更新ステートメントは、ダブルとトリプルを取得するためにGROUPedフォームに結合する必要があります。

    update duotri t1
    inner join (
        select time, type,
         case when count(distinct genre) = 2 then 1 else 0 end doubles,
         case when count(distinct genre) = 3 then 1 else 0 end triples
        from duotri
        group by time, type) t2
       on t1.time=t2.time and t1.type=t2.type
    set t1.doubles=t2.doubles, t1.triples = t2.triples;
    


    1. SQLは、パラメーターがnullの場合はすべて選択し、それ以外の場合は特定の項目を返します

    2. SelectQueryで条件付き書式設定にCaseステートメントを使用する方法-SQLServer/TSQLチュートリアルパート116

    3. SQL Serverで日時フィルタリングのパフォーマンスを向上させる方法は?

    4. Joomlaのテンプレートのトップ9データベース管理システム