sql >> Databasteknik >  >> RDS >> Oracle

Räknar antalet sammanfogade rader i vänster sammanfogning

Vad sägs om något sånt här:

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;

Funktionen COUNT() kommer att räkna varje rad, även om den har null. Med SUM() och CASE kan du bara räkna icke-nullvärden.

EDIT:En enklare version hämtad från den översta kommentaren:

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

Hoppas det hjälper.



  1. Hur man installerar MySQL på Debian 8

  2. Anslutning till SQL Server fungerar ibland

  3. GROUP eller DISTINCT efter JOIN returnerar dubbletter

  4. INSERT IGNORE vs INSERT ... PÅ DUBLIKATNYCKELUPPDATERING