sql >> Databáze >  >> RDS >> Mysql

MySQL/SQL:Aktualizace s korelovaným poddotazem ze samotné aktualizované tabulky

Po dvou odpovědích, které jsem obdržel (žádná z nich nebyla úplná, takže jsem napsal svou vlastní), jsem nakonec udělal následující:

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 

Funguje to velmi rychle. Zkoušel jsem také korelovaný poddotaz, ale bylo to mnohem pomalejší (řádově), takže zůstávám u spojení.



  1. CHECK CONSTRAINT na více sloupcích

  2. Jak se zbavit chyby MySQL „Připravený příkaz je třeba znovu připravit“

  3. SQL rekurzivní dotaz na samoodkazovací tabulku (Oracle)

  4. Jak vygenerovat celý databázový skript v MySQL Workbench?