sql >> Base de Datos >  >> RDS >> Mysql

Mysql:actualice t1 con el recuento de filas t2 donde dos columnas son las mismas que para t1

Dado que desea valores cero para sus filas no coincidentes, es un trabajo para LEFT JOIN , como:

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`

Estamos contando t1.key porque para filas coincidentes serán iguales en primero tabla (y no la segunda) - por lo tanto, debemos agrupar por ella - y no por campo en la segunda tabla.

Consejo :evite nombrar sus tablas/columnas con palabras reservadas de mysql. Esto te ahorrará mucho tiempo si accidentalmente olvidas los acentos graves.