次の問題の最適な解決策を見つけるのに苦労しています。
次のようなテーブル「テーブル」があるとします。
id name report_id
1 name1 1
2 name2 3
3 name3 5
4 name1 7
5 name3 8
....................
セット内の各値を選択したい: ('name1', 'name2') 10 個のランダムな一意の行。
もちろん、次のようなユニオンで行うことができます。
(SELECT * FROM Table
WHERE
name='name1'
ORDER BY RAND() LIMIT 10)
UNION
(SELECT * FROM Table
WHERE
name='name2'
ORDER BY RAND() LIMIT 10)
しかし、10 個のランダムなレコードを選択する必要がある 100 個の一意の名前がある場合、このクエリは少し大きくなります。