代码之家  ›  专栏  ›  技术社区  ›  Andres SK

左联接表上的MySQL计数忽略没有联接的记录

  •  0
  • Andres SK  · 技术社区  · 7 年前

    • 朋友

    • 用户

      • ID用户

    用户ID 3

    SELECT
    COUNT(wc_forecast.id_forecast) AS q,
    user.name AS name, user.screen_name AS screen_name
    FROM user
        JOIN friend ON friend.id_str = user.id_str
        LEFT JOIN wc_forecast ON wc_forecast.id_user = user.id_user
    WHERE
        friend.id_user = 3
    GROUP BY wc_forecast.id_user
    ORDER BY q DESC
    

    问题是并不是所有的用户都在显示。特别是那些没有做出任何预测的人不在这个名单上。奇怪的是,只有一个是。

    SQL Fiddle 有一些示例记录。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Paurian    7 年前

    我想,如果没有值可以分组,那么它就被排除在外。

    SELECT
      COUNT(wc_forecast.id_forecast) AS q,
      user.name AS name,
      user.screen_name AS screen_name
    FROM user
      JOIN friend ON friend.id_str = user.id_str
      LEFT JOIN wc_forecast
        ON wc_forecast.id_user = user.id_user
    WHERE
        friend.id_user = 3
    GROUP BY
      user.id_user
    ORDER BY
      q DESC
    

    http://sqlfiddle.com/#!9/3519c/12/0

    推荐文章