MySQL Query从两个表中接收随机组合

时间:2011-06-28 12:52:31

标签: mysql join random limit

好吧,这是我的问题,我有两个表,一个名为firstnames,另一个名为lastnames。我在这里要做的是从测试数据的这些名称中找到100种可能的组合。 firstnames表在一列中有5494个条目,lastnames表在一列中有88799个条目。我能够提出的唯一一个结果是:

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并给出了可以使用它的每个lastname。虽然这是合理的,但我必须将限制设置为500000000才能在不使用20个名字的情况下获得所有组合(而且我宁愿不杀死我的服务器)。但是,我只需要100个随机生成的测试数据条目,我将无法使用此代码获得。有人可以给我任何建议吗?

2 个答案:

答案 0 :(得分:0)

在你限制10之前,你也可以通过rand()订购de final结果,这样可以随机播放你的500000000结果,为你提供你想要的结果。

答案 1 :(得分: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个随机姓氏的所有组合。更改限制以更改要组合的名称数。