Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Mysql - aktualisiere t1 mit der Anzahl von t2 Zeilen, wobei zwei Spalten die gleichen sind wie für t1

Da Sie Nullwerte für Ihre nicht übereinstimmenden Zeilen wollen, ist es eine Arbeit für LEFT JOIN , wie:

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`

Wir zählen t1.key denn für übereinstimmende Zeilen werden sie zuerst gleich sein Tabelle (und nicht zweite) - daher sollten wir danach gruppieren - und nicht nach Feld in der zweiten Tabelle.

Tipp :Vermeiden Sie es, Ihre Tabellen/Spalten mit mysql-reservierten Wörtern zu benennen. Dies spart Ihnen viel Zeit, wenn Sie versehentlich Backticks vergessen.