返回重复ID的次数

时间:2017-06-15 18:25:58

标签: mysql

所以我有两张桌子:

订单

order_id | user_id
   1     |     1
   2     |     1
   3     |     1
   4     |     2
   5     |     2

用户

user_id | name
   1    | John
   2    | Mike

我想要返回id,客户名称以及他已下达的订单数量。像这样:

user_id | name | num_orders
    1   | John |   3
    2   | Mike |   2

我尝试执行以下查询,但它只返回第一个用户的名称和订单总数。这是我的查询:

SELECT 
  users.user_id,
  users.name,
  COUNT(orders.order_id) AS num_orders

FROM users

LEFT JOIN orders
ON users.user_id = orders.user_id

ORDER BY users.user_id DESC

非常感谢任何帮助! :)

2 个答案:

答案 0 :(得分:3)

您缺少GROUP BY语句。如果你在最后加入

GROUP BY users.user_id

它应该纠正你的问题。

有关SQL语句的更多帮助,请尝试http://www.dofactory.com/sql/tutorial

答案 1 :(得分:2)

您正在寻找的是GROUP BY条款。 它与聚合函数(COUNT,MAX,MIN,SUM,AVG)一起使用,以按一列或多列对结果进行分组。下面是它的工作原理。

SELECT 
  users.name,
  users.user_id,
  count(users.user_id) as total
FROM users
LEFT JOIN orders ON users.user_id = orders.user_id
GROUP BY users.user_id
ORDER BY users.user_id DESC

结果:

username |user_id | total
John     |   3    | 3
Mary     |   2    | 5
Carl     |   1    | 1
...