キーは、COUNTOFDISTINCT電話名を使用するGROUPBY/HAVINGにあります。カウントが2の場合、ユーザーが両方を持っていることがわかります 電話。
SELECT m5.name
FROM mark5 m5
INNER JOIN mark4 m4
ON m5.uid = m4.uid
INNER JOIN mark3 m3
ON m4.phoneid = m3.phoneid
WHERE m3.name in ('HTC', 'Samsung')
GROUP BY m5.name
HAVING COUNT(DISTINCT m3.name) = 2;