在同一查询SQL中使用COUNT和JOIN

时间:2014-10-24 09:30:17

标签: sql

我的桌子:

Customers

+------+----+
| Name | ID |
+------+----+
| Phu  | 12 |
| Nam  | 23 |
| Mit  | 33 |
+------+----+

Orders

+----+------------+
| ID |   Order    |
+----+------------+
| 12 | Laptop     |
| 12 | Mouse      |
| 33 | Smartphone |
| 23 | Keyboard   |
| 33 | Computer   |
+----+------------+

我想得到这样的输出:

+------+--------+
| Name | Orders |
+------+--------+
| Phu  |      2 |
| Mit  |      2 |
+------+--------+

我使用此查询但这不起作用:

SELECT 
    Name,
    COUNT(*) AS 'Orders'
FROM 
    Orders a
INNER JOIN 
    Customers b ON a.ID = b.ID
GROUP BY 
    a.ID 
HAVING 
    COUNT(*) > 1;

它有这样的错误:

  

列'Customers.Name'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。

非常感谢任何帮助。谢谢。

2 个答案:

答案 0 :(得分:1)

SELECT c.Name, COUNT(o.ID) AS Orders
FROM Customers c INNER JOIN Orders o ON c.ID = o.ID
GROUP BY o.ID
HAVING Orders > 1

使用 Sqlfiddle http://sqlfiddle.com/#!2/869790/4

答案 1 :(得分:0)

正如我的评论中所提到的,select语句中的每一列都必须在group by子句中。

SELECT  Name, COUNT(*) AS 'Orders'
FROM    Orders a
INNER JOIN  Customers b
ON a.ID = b.ID
GROUP BY b.Name
HAVING COUNT(*)>1;