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()関数は、nullがある場合でも、すべての行をカウントします。 SUM()とCASEを使用すると、null以外の値のみをカウントできます。

    編集:トップコメントから抜粋したより単純なバージョン:

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

    お役に立てば幸いです。



    1. Oracleでフィールドの値が変更されたときに行番号をインクリメントする

    2. テーブルの値を使用したPostgresINTERVAL

    3. ストリームを使用してSQLServer(C#)の行を挿入または更新できますか?

    4. SQL Serverサーバーの正規表現?