sql >> Database >  >> RDS >> Mysql

Mysql - update t1 met het aantal t2-rijen waarbij twee kolommen hetzelfde zijn als voor t1

Aangezien u nulwaarden wilt voor uw niet-overeenkomende rijen, is dit een werk voor LEFT JOIN , zoals:

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`

We tellen t1.key omdat ze voor overeenkomende rijen hetzelfde zijn in eerste tabel (en niet de tweede) - we moeten er dus op groeperen - en niet per veld in de tweede tabel.

Tip :vermijd om uw tabellen/kolommen een naam te geven met gereserveerde mysql-woorden. Dit bespaart u veel tijd als u per ongeluk backticks vergeet.



  1. Bel mysql geneste/innerlijke functies in querydsl

  2. Kolomgegevens retourneren van een gekoppelde server in SQL Server (T-SQL-voorbeelden)

  3. Groeperen op maand inclusief lege maanden

  4. Een tijdelijke tabel maken op basis van een andere tabel in SQL Server