Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Mysql - atualiza t1 com contagem de linhas t2 onde duas colunas são as mesmas que para t1


Como você deseja zero valores para suas linhas não correspondidas, é um trabalho para LEFT JOIN , Curti:
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 as linhas correspondentes elas serão iguais na primeira tabela (e não segundo) - portanto, devemos agrupar por ela - e não por campo na segunda tabela.

Dica :evite nomear suas tabelas/colunas com palavras reservadas do mysql. Isso economizará muito tempo se você acidentalmente esquecer os acentos graves.