【问题标题】:MYSQL COUNT return NULL?MYSQL COUNT 返回 NULL?
【发布时间】:2012-04-04 14:12:12
【问题描述】:

我用谷歌搜索了我的问题,但没有得到答案。 我想列出以下 sql 的所有结果,包括 NULL(当 COUNT(review.id) 也返回 0 时),但我只是得到了仅包含评论的文章的结果。

$sql = "SELECT tbl_place.id, tbl_place.region_id, tbl_place.subregion_id, tbl_place.title, tbl_place.metalink, tbl_place.img_thumbnail, tbl_place.summary, tbl_place.category1_id, tbl_place.category2_id, tbl_place.category3_id, COUNT(review.id) AS total_review FROM tbl_place
        JOIN review ON tbl_place.id = review.place_id
        WHERE
        tbl_place.category1_id = '32'   AND 
        tbl_place.status = '1'          AND
        review.rating != '0.00'         
        GROUP BY tbl_place.id
        ORDER BY total_review $by
        LIMIT $limit OFFSET $offset";

【问题讨论】:

标签: php mysql sql aggregate-functions


【解决方案1】:

请使用左联接代替联接。 join 默认是内连接,所以它只接受匹配的记录。

【讨论】:

    【解决方案2】:

    sql 应该是:

    $sql = "SELECT tbl_place.id, 
    tbl_place.region_id, 
    tbl_place.subregion_id, 
    tbl_place.title, 
    tbl_place.metalink, 
    tbl_place.img_thumbnail, 
    tbl_place.summary, 
    tbl_place.category1_id, 
    tbl_place.category2_id, 
    tbl_place.category3_id, 
    (SELECT COUNT(*) FROM review WHERE review.rating != '0.00' AND tbl_place.id = review.place_id ) AS total_review 
    FROM tbl_place WHERE 
    tbl_place.category1_id = '32' AND 
    tbl_place.status = '1'   
    GROUP BY tbl_place.id 
    ORDER BY total_review $by";
    

    它正在工作!谢谢各位!

    【讨论】:

      猜你喜欢
      • 2014-09-08
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      • 2014-04-26
      相关资源
      最近更新 更多