sql >> Database teknologi >  >> RDS >> Mysql

Mysql - opdater t1 med antallet af t2 rækker, hvor to kolonner er de samme som for t1

Da du vil have nul værdier for dine ikke-matchede rækker, er det et arbejde for 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 tæller t1.key fordi for matchede rækker vil de være de samme i første tabel (og ikke anden) - derfor bør vi gruppere efter den - og ikke efter felt i anden tabel.

Tip :undgå at navngive dine tabeller/kolonner med mysql reserverede ord. Dette vil spare dig for masser af tid, hvis du ved et uheld glemmer backticks.



  1. Når jeg tilføjer xx til mysql float kolonne, er det forkert resultat, er det en fejl?

  2. Hvordan får man MySQL til at behandle understregning som en ordseparator til fuldtekstsøgning?

  3. Lagring af dynamiske pivotresultater i en midlertidig tabel i SQL Server

  4. SQLite COUNT