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

MySQL - Проблем с броенето на редове и лявото присъединяване

Бих избрал нещо като:

SELECT 
    c.id AS campaign_id, 
    COUNT(cc.id) AS code_count
FROM 
    campaigns c
LEFT JOIN campaign_codes cc on cc.campaign_id = c.id
AND cc.status = 0 -- Having this clause in the WHERE, effectively makes this an INNER JOIN
WHERE c.partner_id = 4
GROUP BY c.id

Преместване на AND към клаузата за присъединяване прави свързването успешно или неуспешно, което е от решаващо значение за запазване на получените редове там, където няма съвпадащ ред в „дясната“ таблица.

Ако беше в WHERE , сравненията с NULL (където няма код_кампания) биха се провалили и ще бъдат елиминирани от резултатите.



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

  2. Кой е най-лесният начин за добавяне на празни дати в sql резултати (в края на mysql или perl)?

  3. Как да изпълня UPSERT, така че да мога да използвам както нови, така и стари стойности в частта за актуализиране

  4. Изберете множество суми с MySQL заявка и ги покажете в отделни колони

  5. 15 основни въпроса за интервю за MySQL за администратори на бази данни