sql >> Databasteknik >  >> RDS >> Mysql

Mysql - uppdatera t1 med antalet t2 rader där två kolumner är samma som för t1

Eftersom du vill ha nollvärden för dina icke-matchade rader, är det ett arbete för LEFT JOIN , som:

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`

Vi räknar t1.key eftersom de för matchade rader kommer att vara samma i första tabell (och inte andra) - därför bör vi gruppera efter den - och inte efter fält i den andra tabellen.

Tips :undvik att namnge dina tabeller/kolumner med reserverade mysql-ord. Detta kommer att spara mycket tid om du av misstag glömmer backticks.



  1. Använda en sorteringsordningskolumn i en databastabell

  2. När jag lägger till xx i mysql float-kolumn är det fel resultat, är det en bugg?

  3. Oracle SQL-fråga - generera poster mellan två datum

  4. django hur man definierar modeller för befintliga många till många tabeller i postgresql-databasen