sql >> Databasteknik >  >> RDS >> Mysql

MySQL/SQL:Uppdatering med korrelerad underfråga från själva den uppdaterade tabellen

Efter de två svaren jag fick (av vilka inget var komplett så jag skrev mitt eget), var det jag till slut gjorde följande:

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 fungerar väldigt snabbt. Jag försökte också med korrelerad underfråga, men det var mycket långsammare (storleksordningar), så jag håller fast vid sammanfogningen.



  1. Konvertera ett månadsnummer till månadsnamnet i SQL Server (T-SQL)

  2. MySQL CRC32() Funktion – Exempel

  3. ORA-00936:orakel för uttryck som saknas

  4. Oracle WHILE LOOP Exempel