SQL:where子句中的明显计数?

时间:2011-12-05 10:17:50

标签: sql count

我的订单表如下:

id   fk_customer
1    34
2    34
3    34
4    7
5    7
6    8

我想只选择订单超过2个的客户。

然而,这不起作用:

SELECT * FROM order WHERE COUNT DISTINCT fk_customer > 2

请指教!

感谢

4 个答案:

答案 0 :(得分:10)

试试这个:

SELECT fk_customer, COUNT(*)   
FROM dbo.[Order]
GROUP BY fk_customer
HAVING COUNT(*) > 2

Order是大多数基于SQL的数据库系统中的保留字 - 对于表名称的错误选择....在SQL Server中,您需要将其放在方括号中以使其清楚它是对象名称(

答案 1 :(得分:1)

试试这个

SELECT fk_customer FROM orders
GROUP BY fk_customer
HAVING COUNT(id) > 2

答案 2 :(得分:1)

如果您尝试在COUNT子句中使用WHERE,SQL将抛出异常。如果聚合函数位于HAVING子句或选择列表中包含的子查询中,则只能使用聚合函数。

SELECT fk_customer, COUNT(*)    
  FROM dbo.[Order] 
 GROUP 
    BY fk_customer 
HAVING COUNT(*) > 2 

答案 3 :(得分:0)

SELECT fk_customer, COUNT(fk_customer) FROM [order]
GROUP BY fk_customer HAVING COUNT(*) > 2