sql >> Database >  >> RDS >> Mysql

MySQL/SQL:update met gecorreleerde subquery vanuit de bijgewerkte tabel zelf

Na de twee antwoorden die ik ontving (geen van alle was compleet, dus ik schreef mijn eigen antwoorden), wat ik uiteindelijk deed, is als volgt:

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 

Het werkt heel snel. Ik heb ook geprobeerd met gecorreleerde subquery's, maar het was veel langzamer (orden van grootte), dus ik blijf bij de join.



  1. Selecteer records van vandaag, deze week, deze maand php mysql

  2. MySQL-query, 3 tabellen, t1-t2 en update vervolgens t3. Hoe kan ik dit het meest efficiënt doen?

  3. Hoe Oracle SQL-script uit te voeren via Java-code

  4. upload een bestand naar een MySql DB met PHP