sql >> Database teknologi >  >> RDS >> Oracle

Tæller antallet af sammenføjede rækker i venstre sammenføjning

Hvad med sådan noget her:

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() tæller hver række, selvom den har null. Ved at bruge SUM() og CASE kan du kun tælle værdier, der ikke er nul.

EDIT:En enklere version taget fra den øverste kommentar:

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

Håber det hjælper.



  1. 10 Microsoft Access-tip til oprettelse af udvalgte forespørgsler

  2. Kombinerer styrken af ​​SQL og proceduremæssige erklæringer med MariaDBs Oracle-kompatibilitetstilstand

  3. Brug FILE_IDEX() til at returnere id'et for en databasefil i SQL Server

  4. Fysiske replikationsmekanismer i PostgreSQL