sql >> Database >  >> RDS >> Oracle

Tellen van het aantal samengevoegde rijen in de linker join

Wat dacht je van zoiets:

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;

De functie COUNT() telt elke rij, zelfs als deze null heeft. Met SUM() en CASE kunt u alleen niet-null-waarden tellen.

EDIT:Een eenvoudigere versie uit de bovenste opmerking:

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

Ik hoop dat dat helpt.



  1. FOUT 1698 (28000):Toegang geweigerd voor gebruiker 'root'@'localhost'

  2. Maak een gepartitioneerde tabel in SQL Server (T-SQL)

  3. Patchbeleid

  4. Verleen privileges voor een bepaalde database in PostgreSQL