我的订单表如下:
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
请指教!
感谢
答案 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