2011-06-28 141 views
1

好的,這是我的問題,我有兩個表,一個名爲firstnames,另一個名爲lastnames。我在這裏要做的是從這些名稱中找到100個可能的組合用於測試數據。 firstnames表在單個列中有5494個條目,而lastnames表在單個列中有88799個條目。我已經能夠想出的唯一查詢有一定的結果是:MySQL查詢接收來自兩個表的隨機組合

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

這段代碼的問題是,它選擇1個名字和給每個姓氏,可以用它去。雖然這是合理的,但我必須將限制設置爲500000000,以獲得所有可能的組合,而不需要只有20個名字(並且我寧願不殺死我的服務器)。但是,我只需要測試數據的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

rand()以及您在限制10之前訂購的最終結果,應該將您的500000000結果洗牌,以提供您想要的結果。