HAVINGを使用する必要があります 、WHEREではありません 。
違いは次のとおりです。WHERE 句は、MySQLが選択する行をフィルタリングします。 次に MySQLは行をグループ化し、COUNTの数値を集計します 機能。
HAVING WHEREのようなものです 、後にのみ発生します COUNT 値が計算されているため、期待どおりに機能します。サブクエリを次のように書き直します:
( -- where that pid is in the set:
SELECT c2.pid -- of pids
FROM Catalog AS c2 -- from catalog
WHERE c2.pid = c1.pid
HAVING COUNT(c2.sid) >= 2)