メインセレクトのWHERE句は、一致する住所のみをチェックします。
AND family.streetAddress in (....)
これは、間違った都市に属している場合でも、サブセレクトで見つかった住所と一致します。副選択は現在、住所のみを返し、一致する都市は返しません。それが問題です。
これで問題が解決するかどうかはわかりませんが、副選択をネストされたテーブル式に変更して、住所と都市の両方で一致させることができます。多分何かの線に沿って
SELECT family.* --and other main select stuff
WHERE charity.user_id = family.createdby
AND exists --similar to count(*) > 1
select streetAddress, city
from (
(SELECT family.streetAddress, family.city
FROM family
GROUP BY family.city,family.streetAddress
HAVING count(*) > 1) AS subSelect
)
WHERE family.streetAddress = subSelect.streetAddress
AND family.city = subSelect.city