2011-06-28 19 views
1

大丈夫、ここに私の問題があります。私は2つのテーブルを持ち、1つはfirstnamesという名前で、もう1つはlastnamesという名前です。私がここでやろうとしているのは、テストデータ用にこれらの名前から100種類の組み合わせを見つけることです。 firstnamesテーブルは単一の列に5494のエントリを持ち、lastnamesテーブルは単一の列に88799のエントリを持ちます。私はいくつかの結果を持って思い付くことができた唯一のクエリは次のとおりです。2つのテーブルからランダムな組み合わせを受け取るクエリ

select * from (select * from firstnames order by rand()) f LEFT JOIN (select * from lastnames order by rand()) l on 1=1 limit 10; 

このコードの問題は、それが1つのFIRSTNAMEを選択し、それに行くことができるすべての姓を与えることです。これはもっともらしいですが、名前を20個しか持たずにすべての組み合わせを可能にするには、制限を500000000に設定する必要があります。しかし、私はテストデータ用に100個のランダムな世代のエントリしか必要とせず、このコードではそれを得ることができません。誰も私に助言を与えてもらえますか?

答えて

0

これはあなたの探しているものですか?

SELECT * 
FROM (

SELECT firstname 
FROM firstnames 
ORDER BY RAND() 
LIMIT 10 
) AS tb1 
JOIN (

SELECT lastname 
FROM lastnames 
ORDER BY RAND() 
LIMIT 10 
) AS tb2 ON 1=1 

これは、10のランダムなファーストネームと10のランダムなラストネームのすべての組み合わせを提供します。制限を変更して、結合する名前の数を変更します。

+0

これは非常にうまくいきます、ありがとうございます! – Michael

+0

答えとしてマークしてください!ありがとうございました :) –

0

制限を10にする前に、最終結果をrand()と同様に並べると、500000000の結果がシャッフルされ、必要なものが得られます。

関連する問題