sql >> Databasteknik >  >> RDS >> Mysql

mysql - UPPDATERING av rad baserat på andra rader

Visst, du kan göra det i en fråga. Med hjälp av denna exempeltabell:

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);

Uppdateringssatsen bör anslutas till formuläret GROUPed för att få dubbla och trippel.

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. Vilka är fördelarna och nackdelarna med att behålla SQL i lagrade processer kontra kod

  2. Använd XEvent Profiler för att fånga frågor i SQL Server

  3. Finns det något sätt att inte använda hakparenteser i SQL Server?

  4. Konvertera 'smalldatetime' till 'datetimeoffset' i SQL Server (T-SQL-exempel)