0

互いに同一ではない3つのテーブルがありました。私の要件の 1 つによると、これらすべてのテーブル レコードを別のテーブルにコピーする必要がありました。その部分は大丈夫です。私の問題は、挿入したレコードが現在順番になっていることです。お気に入り

first 100 records from table1
second 100 records from table2
third 100 records from table3

私がやりたかったchange/mixのはレコードの位置です。最初の 100 レコードを選択した場合、 3 つのテーブルすべてからレコードが存在するはずです。

データORDER BY Rand()を選択する必要はありません。データを選択してそれらのデータを表示するだけです。これを解決する方法はありますか?ありがとう

4

2 に答える 2

0

単純なものからギャップのあるものまで、ギャップのある不均一なものまで、いくつかのケースを扱う素晴らしい投稿。

http://jan.kneschke.de/projects/mysql/order-by-rand/

ほとんどの一般的なケースでは、次のようにします。

SELECT name
FROM random AS r1 JOIN
   (SELECT (RAND() *
                 (SELECT MAX(id)
                    FROM random)) AS id)
    AS r2
WHERE r1.id >= r2.id
ORDER BY r1.id ASC
LIMIT 1

これは、ID の分布が等しいこと、および ID リストにギャップがある可能性があることを前提としています。より高度な例については、記事を参照してください

于 2013-01-16T07:42:28.080 に答える
0

後でクエリを実行したくない場合は、最初にrand()ユニオン選択順序付けから挿入してテーブルを作成できます。rand()

INSERT INTO merged (a, b)
SELECT a, b FROM (
  SELECT a, b, rand() AS r FROM t1
  UNION ALL
  SELECT a, b, rand() AS r FROM t2
) ORDER BY r

ただし、私が出会ったばかりのこの投稿も考慮してください: UNION を使用した INSERT INTO SELECT 奇妙な順序、おそらく誰かがコメントできます。

于 2013-01-16T07:42:59.227 に答える