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

レコードが見つからない場合に0を返すMySqlcount()

    Januaryの月の記録はありません そのため、結果が得られません。有効な解決策の1つは、リストに表示する月のリストを含むサブクエリを結合することです。

    SELECT count(b.id) as totalRec
    FROM   (
                SELECT 'January' mnth
                UNION ALL
                SELECT 'February' mnth
                UNION ALL
                SELECT 'March' mnth
            ) a
            LEFT JOIN post b
                ON a.mnth = DATE_FORMAT(b.date, '%M') AND
                   year(b.date) =  '2013' AND 
                   DATE_FORMAT(b.date, '%M') IN ('January', 'February', 'March') 
    GROUP  BY year(b.date)-month(b.date) 
    ORDER  BY b.date ASC
    

    出力

    ╔══════════╗
    ║ TOTALREC ║
    ╠══════════╣
    ║        0 ║
    ║        7 ║
    ║        9 ║
    ╚══════════╝
    


    1. MySqlIN句をどのように使用しますか

    2. 移行のためのPostgreSQL外部キーチェックを無効にする

    3. トップ待機統計について何をするか(またはしないか)

    4. Sequelize BulkCreate()は、主キーにNULL値を返します