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