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

Mysql - aktualizace t1 s počtem t2 řádků, kde jsou dva sloupce stejné jako pro t1

Protože chcete nulové hodnoty pro neshodné řádky, je to práce pro LEFT JOIN , jako:

SELECT 
  t1.*, 
  IF(t2.`key` IS NULL, 0, COUNT(t1.`key`)) AS t2_row_count 
FROM 
  t1 
    LEFT JOIN t2 
      ON t1.id=t2.id 
      AND 
      t1.category=t2.category 
GROUP BY 
  t1.`key`

Počítáme t1.key protože pro odpovídající řádky budou stejné jako první tabulka (a ne druhá) – měli bychom tedy seskupovat podle ní – a ne podle pole v druhé tabulce.

Tip :vyhněte se pojmenování tabulek/sloupců vyhrazenými slovy mysql. To vám ušetří spoustu času, pokud náhodou zapomenete zpětné zaškrtnutí.



  1. Výkon SQL pro vyhledávání dlouhých řetězců

  2. Před a po spuštění u stejné události? Vyplňte podřízenou tabulku PostgreSQL

  3. Načítání CSV dat do PostgreSQL tabulky

  4. Jak najít ASCII kód ​​pro daný znak v MySQL