検索

ホームページ  >  に質問  >  本文

MySQL 出力内の重複行を分散するにはどうすればよいですか?

ランダムな順序で行を出力する MySQL クエリがあります。

各行には name 列があり、クエリによって重複する行 (同じ値を持つ name 行) が生成される場合があります。これは仕様です。 < /p>

ただし、クエリによっては、重複した行が出力内で誤って直接グループ化されてしまう場合があります。

重複した行が誤ってグループ化されないように、出力内で重複する名前を持つ行を均等に分散する方法を見つけようとしています。

P粉805107717P粉805107717471日前648

全員に返信(1)返信します

  • P粉311423594

    P粉3114235942023-09-14 09:16:23

    これを実現する 1 つの方法は、MySQL クエリを変更して追加の並べ替え基準を含め、同じ名前の行が出力全体に均等に分散されるようにすることです。

    これを実現するためのサンプル クエリを次に示します:

    リーリー

    このクエリは、最初に名前で行を並べ替え、次に RAND() 関数によって生成されたランダム値で並べ替えます。ランダム値を使用すると、同じ名前の行がグループ化されるのではなく、出力全体にランダムに分散されます。

    ORDER BY 句で RAND() 関数を使用すると、計算コストが高くなる可能性があり、大きなテーブルではうまく拡張できない可能性があることに注意してください。この場合、同様の結果を得るために、別の決定論的関数 (名前の MD5 ハッシュなど) を使用することを検討してください。

    リーリー

    このクエリは、最初に名前の MD5 ハッシュによって行を並べ替え、次に RAND() 関数によって生成されたランダムな値によって行を並べ替えます。 MD5 ハッシュにより、同じ名前の行が出力全体に均等に分散されます。一方、ランダム値により、行の順序がランダムになります。

    返事
    0
  • キャンセル返事