2017-01-29 76 views
0

我想過濾掉小於3的結果,但每當我添加WHERE語句時查詢失敗。我的查詢出了什麼問題?我正在使用MySQL Workbench 3.7SQL WHERE不會過濾我的結果

SELECT c.name, COUNT(DISTINCT s.product_id) AS veggies 
FROM sales AS s 
INNER JOIN customers AS c 
ON c.id=s.customer_id 
GROUP BY s.customer_id 
WHERE veggies > 2" 

謝謝! 號Yoni

+0

查詢必須符合語法 – Strawberry

回答

-1

需要使用HAVINGGROUP BY後不WHERE

SELECT 
    c.name, COUNT(DISTINCT s.product_id) AS veggies 
FROM 
    sales AS s 
    INNER JOIN customers AS c ON c.id = s.customer_id 
GROUP BY 
    s.customer_id 
HAVING 
    veggies > 2 
+0

請問downvoter請留言 –

2

where應該是having

SELECT c.name, COUNT(DISTINCT s.product_id) AS veggies 
FROM sales s INNER JOIN 
    customers c 
    ON c.id = s.customer_id 
GROUP BY s.customer_id 
HAVING veggies > 2; 

無論是查詢產生的語法錯誤(即未運行),或者停在GROUP BY而忽略了WHERE

-1

Grouping requires knowledge of entire list. There is an order of operations in mysql query。 (點擊這個鏈接將帶您,回答了頁)

希望這將工作,

SELECT c.name, COUNT(DISTINCT s.product_id) AS veggies' 
FROM sales AS s 
INNER JOIN customers AS c 
ON c.id=s.customer_id 
WHERE veggies > "2" 
GROUP BY s.customer_id 

通過交換這兩條線。

GROUP BY s.customer_id 
WHERE veggies > "2" 

GROUP BY總是出現在WHERE之後。

除此之外,你在這裏錯過了2左右的開頭引號。

WHERE veggies > 2" 

並且在第一行末尾有一個不必要的單引號(')。