ランダムな順序で行を出力する MySQL クエリがあります。
各行には name 列があり、クエリによって重複する行 (同じ値を持つ name 行) が生成される場合があります。これは仕様です。 < /p>
name
ただし、クエリによっては、重複した行が出力内で誤って直接グループ化されてしまう場合があります。
重複した行が誤ってグループ化されないように、出力内で重複する名前を持つ行を均等に分散する方法を見つけようとしています。
これを実現する 1 つの方法は、MySQL クエリを変更して追加の並べ替え基準を含め、同じ名前の行が出力全体に均等に分散されるようにすることです。
これを実現するためのサンプル クエリを次に示します:
このクエリは、最初に名前で行を並べ替え、次に RAND() 関数によって生成されたランダム値で並べ替えます。ランダム値を使用すると、同じ名前の行がグループ化されるのではなく、出力全体にランダムに分散されます。
ORDER BY 句で RAND() 関数を使用すると、計算コストが高くなる可能性があり、大きなテーブルではうまく拡張できない可能性があることに注意してください。この場合、同様の結果を得るために、別の決定論的関数 (名前の MD5 ハッシュなど) を使用することを検討してください。
このクエリは、最初に名前の MD5 ハッシュによって行を並べ替え、次に RAND() 関数によって生成されたランダムな値によって行を並べ替えます。 MD5 ハッシュにより、同じ名前の行が出力全体に均等に分散されます。一方、ランダム値により、行の順序がランダムになります。
これを実現する 1 つの方法は、MySQL クエリを変更して追加の並べ替え基準を含め、同じ名前の行が出力全体に均等に分散されるようにすることです。
これを実現するためのサンプル クエリを次に示します:
リーリーこのクエリは、最初に名前で行を並べ替え、次に RAND() 関数によって生成されたランダム値で並べ替えます。ランダム値を使用すると、同じ名前の行がグループ化されるのではなく、出力全体にランダムに分散されます。
ORDER BY 句で RAND() 関数を使用すると、計算コストが高くなる可能性があり、大きなテーブルではうまく拡張できない可能性があることに注意してください。この場合、同様の結果を得るために、別の決定論的関数 (名前の MD5 ハッシュなど) を使用することを検討してください。
リーリーこのクエリは、最初に名前の MD5 ハッシュによって行を並べ替え、次に RAND() 関数によって生成されたランダムな値によって行を並べ替えます。 MD5 ハッシュにより、同じ名前の行が出力全体に均等に分散されます。一方、ランダム値により、行の順序がランダムになります。