Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL/SQL:Aktualizacja ze skorelowanym podzapytaniem z samej zaktualizowanej tabeli

Po dwóch otrzymanych odpowiedziach (żadna z nich nie była kompletna, więc napisałem własną), to, co ostatecznie zrobiłem, wygląda następująco:

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 

Działa bardzo szybko. Próbowałem również z skorelowanym podzapytaniem, ale było znacznie wolniejsze (rzędy wielkości), więc trzymam się sprzężenia.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JavaScript Potwierdź przed usunięciem za pomocą PHP/MYSQL

  2. Jak wygenerować następny numer automatycznego przyrostu w mysql za pomocą php?

  3. Transakcja PHP PDO Duplikacja

  4. Jak zapobiec dwukrotnemu drukowaniu przez to zapytanie tych samych wyników?

  5. Jak odgadnąć schemat w Mysqlinput w locie w Talend