以下に質問があります。それを実行すると、単一のメンバーIDごとに複数のレコードが表示されるすべての結果が返されます。
ランダムに選択された 2 人のメンバーのプロファイルを、パフォーマンスの問題なしで選択したいと考えています。
SELECT
a.memberid,
a.category_id,
a.content,
a.count_cid,
a.importance
FROM tb_profilingdata a,
tb_member b
WHERE a.memberid = b.memberid
AND a.category_id IN($catstr)
AND a.memberid NOT IN('$mid',$seen)
AND b.gender = 'male'
ORDER BY a.memberid, a.category_id
ランダムなレコードを 1 つ選択するためのクエリをいくつか試しました
SELECT
r1.memberid
FROM tb_profilingdata AS r1
JOIN (SELECT
(RAND() * (SELECT MAX(DISTINCT(memberid)) FROM tb_profilingdata)) AS memberid) AS r2
WHERE r1.memberid >= r2.memberid
ORDER BY r1.memberid ASC
LIMIT 1
しかし、 tb_profilingdataから合計 1 つのレコードを選択しますが、ランダムに選択された 1 つのメンバーのレコードが必要です。
tb_memberで同じクエリを試しましたが、tb_memberに存在するメンバーが tb_profilingdata にエントリを持っていない可能性があります。
パフォーマンスの問題を最小限に抑える良い方法を提案してください。