Mysql
 sql >> Base de données >  >> RDS >> Mysql

Mysql - mettre à jour t1 avec le nombre de lignes t2 où deux colonnes sont les mêmes que pour t1

Puisque vous voulez des valeurs nulles pour vos lignes non correspondantes, c'est un travail pour LEFT JOIN , comme :

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`

Nous comptons t1.key car pour les lignes correspondantes, elles seront identiques en première table (et non seconde) - nous devrions donc regrouper par elle - et non par champ dans la seconde table.

Astuce :évitez de nommer vos tables/colonnes avec des mots réservés mysql. Cela vous fera gagner beaucoup de temps si vous oubliez accidentellement des backticks.