sql >> Database teknologi >  >> RDS >> Mysql

MySQL/SQL:Opdatering med korreleret underforespørgsel fra selve den opdaterede tabel

Efter de to svar, jeg modtog (hvoraf ingen var fuldstændige, så jeg skrev mit eget), var det, jeg til sidst gjorde som følger:

UPDATE Table AS target
INNER JOIN 
(
select category, appearances_sum
from Table T inner join (
    select category as cat, sum(appearances) as appearances_sum
    from Table
    group by cat
) as agg
where T.category  = agg.cat
group by category
) as source
ON target.category = source.category
SET target.probability = target.appearances / source.appearances_sum 

Det virker meget hurtigt. Jeg prøvede også med korreleret underforespørgsel, men det var meget langsommere (størrelsesordener), så jeg holder fast i joinforbindelsen.



  1. Hvordan kan jeg bruge en forespørgsel med pladsholder inde i anførselstegn? (perl / postgresql)

  2. Hvordan indstiller du autocommit i en SQL Server-session?

  3. Opdel strenge ved hjælp af mysql

  4. Sådan beregnes ugentlige aktive brugere (WAU) i MySQL