Mysql
 sql >> база данни >  >> RDS >> Mysql

Mysql - актуализира t1 с брой t2 редове, където две колони са същите като за t1

Тъй като искате нулеви стойности за вашите несъвпадащи редове, това е работа за LEFT JOIN , като:

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`

Ние броим t1.key тъй като за съвпадащи редове те ще бъдат еднакви в първи таблица (а не втора) - следователно трябва да групираме по нея - а не по поле във втората таблица.

Съвет :избягвайте да наименувате вашите таблици/колони с mysql запазени думи. Това ще ви спести много време, ако случайно забравите обратните точки.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Python губи връзка с базата данни MySQL след около ден

  2. Търсете в MySQL колона с JSON низ за конкретна стойност

  3. Mysql премахва времевия компонент от datetime

  4. RESTful Api или Socket.IO

  5. MySQL Query не използва индекс в присъединяването на таблица