Mysql
 sql >> Database >  >> RDS >> Mysql

Mysql:aggiorna t1 con il conteggio di t2 righe in cui due colonne sono le stesse di t1

Dal momento che vuoi zero valori per le tue righe non corrispondenti, è un lavoro per LEFT JOIN , come:

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`

Stiamo contando t1.key perché per le righe abbinate saranno le stesse in first tabella (e non seconda) - quindi, dovremmo raggruppare per essa - e non per campo nella seconda tabella.

Suggerimento :evita di nominare le tue tabelle/colonne con parole riservate mysql. Questo ti farà risparmiare un sacco di tempo se dimenticherai accidentalmente i backtick.