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

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

Какво ще кажете за нещо подобно:

SELECT m.MESSAGEID, sum((case when mp.messageid is not null then 1 else 0 end)) FROM MESSAGE m
LEFT JOIN MESSAGEPART mp ON mp.MESSAGEID = m.MESSAGEID
GROUP BY m.MESSAGEID;

Функцията COUNT() ще брои всеки ред, дори ако има нула. Използвайки SUM() и CASE, можете да преброите само стойности, различни от нула.

РЕДАКТИРАНЕ:По-опростена версия, взета от горния коментар:

SELECT m.MESSAGEID, COUNT(mp.MESSAGEID) FROM MESSAGE m
LEFT JOIN MESSAGEPART mp ON mp.MESSAGEID = m.MESSAGEID
GROUP BY m.MESSAGEID;

Надявам се това да помогне.



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

  2. Как да създадете последователност на Oracle, започваща с максимална стойност от таблица?

  3. Не позволявайте на потоците да ви заблуждават

  4. Инструкция за вмъкване на Oracle, ако не съществува

  5. Как да обновите материализиран изглед в oracle