Mysql 稍微复杂的SQL查询

Mysql 稍微复杂的SQL查询,mysql,sql,Mysql,Sql,编写一个SQL查询,返回按用户列出的文章数,结果如下,列标题为:“user\u id”、“username”、“total\u count\u of \u articles”按文章数排序 类似的内容应返回指定的结果集: SELECT u.id AS user_id , u.user_name , SUM(a.user_id IS NOT NULL) AS total_count_of_articles FROM users u LEFT JOIN us

编写一个SQL查询,返回按用户列出的文章数,结果如下,列标题为:“user\u id”、“username”、“total\u count\u of \u articles”按文章数排序

类似的内容应返回指定的结果集:

 SELECT u.id AS user_id
      , u.user_name
      , SUM(a.user_id IS NOT NULL) AS total_count_of_articles
   FROM users u
   LEFT
   JOIN users_articles a
     ON a.user_id = u.id
  GROUP BY u.id, u.user_name
  ORDER BY total_count_of_articles DESC

你在用什么?您只是想通过SQL获取它吗?我知道我用PHP做所有的计数工作……你试过什么吗?不,你根本不想做这个。您正试图为自己完成免费编码。@ilarsona不通过PHP计算!使用count(),使用sum()使用任何东西,但是通过MySQL获取它敌意来自这样一个事实,即您的“问题”看起来几乎与您在sql 101课程/课程中看到的问题相同。在我看来,你好像是从你的课本上直接粘贴了问题。只需使用
COUNT(a.user\u id)
。修正你的列名。例如,没有
users.user\u id
列。关于列名错误,这是固定的。您是对的,COUNT(a.user_id)将返回一个等价的结果。我认为对于初学者(他们认为这种类型的查询“有点复杂”),SUM(a.user\u id不是NULL)足够简洁;我认为这有助于强调这样一个观点,即我们不“计算”a.user\u id为空的行。我们也可以将其写成:
SUM(如果(a.user\u id不是NULL,1,0))