我試圖發現表中所有行出現多次的外鍵,並通過子查詢返回這些外鍵。MySQL,通過特定外鍵出現的次數進行篩選
的專欄中,我能夠想象每個外鍵的COUNT
使用GROUP BY
:
SELECT orders_id, COUNT(*) as count
FROM order_history
GROUP BY orders_id
但後來當我有一個增加它放在企圖子句來過濾,比如:
SELECT orders_id, COUNT(*) as count
FROM order_history
GROUP BY orders_id
WHERE count > 1
我得到一個錯誤
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE count > 1 LIMIT 0, 30' at line 4
顯然count
沒有資格在點WHERE
比較評估?
:帖子答案更新:
感謝您的迅速回應! HAVING
正是我所錯過的。我發現此問題有助於展開以下主題:WHERE vs HAVING
的錯誤是常見的 - *的部件事項SQL SELECT語句的順序*。正如在這種情況下,'WHERE'(如果存在)必須始終在'GROUP BY'之前;這裏的根本問題是*無效的語法*而不是一個未綁定的標識符。 (選擇可以嵌套,但有更好的方法來處理這個。) – 2012-12-28 21:04:29