sql >> データベース >  >> RDS >> Mysql

SQL:複数のテーブルの数を選択する

    問題は、nullを使用した数学と、nullを使用した順序付けです(降順で最初にnullを返すデフォルトの順序をオーバーライドするには、「NULLSLAST」オプションにチェックインしてください)。

    あなたの場合、外部結合を使用すると、ユーザーに大量の記事コメントがあり、フォーラムコメントがない場合、Oraclemathでは100+ null=nullになります。したがって、数学を機能させるには、null=0にする必要があります。そこでNVL()が登場します(また、結果セットから厄介なnullを削除するという優れた副作用もあります)!

    SELECT u.id, u.username, (NVL(COUNT(a.id),0) + NVL(COUNT(f.id),0)) AS rank 
    FROM site_users u 
      LEFT JOIN site_articles_comments a ON a.user_id = u.id 
      LEFT JOIN site_forum_comments f ON f.user_id = u.id 
    GROUP BY u.username, u.id ORDER BY rank DESC LIMIT :l
    

    タグにMySQLとOracleの両方が含まれているようです。上記はOracle用です。 MYSQLの場合は、代わりにCOALESCE(COUNT()、0)を使用してください。



    1. Oracleを使用してDjangoで自動テストを作成する際のORA-65096エラーの修正

    2. ORACLE:LEFTJOINを使用するとマテリアライズドビューが機能しない

    3. 親カテゴリに基づくjQueryajax無制限の動的選択ボックス

    4. インデックスが配列の範囲外だった