2011-06-06 145 views
1

可能重复:
Join two tables in MySQL with random rows from the second加入两个表中的MySQL,但随机只第二个表

所以我有两个表:

首先表有5行,我想以与它们在表中相同的顺序选择所有5行。

第二个表格有800行,从那里随机选择只有5行。

然后加入两个表,但保留第一个表的顺序,只是随机化第二个表的结果。

我尝试了不同的查询,但当我加入两个表时,我无法保持第一个表的结果顺序。

回答

1

为了从字面上做你问什么:

select * from first left join (select * from second order by rand() limit 5) on first.??=second.??; 

然而,我怀疑是从第二个表,你不要换成五个完全随机的结果,但在第一个表中的每个条目一个随机结果(有一些连接条件)。

+0

我不需要一个条件,但是我需要第一个表中每个条目的第二个表的一个随机结果。 我试过你的查询但没有工作。 – Danny 2011-06-06 09:46:29

0

请在你的other question上看到我的回答,并避免重复的问题,你不会得到更好的质量答案!

SET @num1=0, @num2=0; 

SELECT t1.field1, t2.field2 
FROM (
    SELECT field1, @num1:[email protected]+1 AS num 
    FROM table1 
) AS t1 
INNER JOIN (
    SELECT field2, @num2:[email protected]+1 AS num 
    FROM (
     SELECT field2 
     FROM table2 
     ORDER BY RAND() 
     LIMIT 5 
    ) AS t 
) AS t2 
ON t1.num = t2.num;