如何在单个查询中连接不同表的多个随机值?

时间:2015-06-19 14:07:43

标签: mysql sql join

我有3个表(称为resultsusersgames),第一个表从其他表中获取数据,所有表都有一个主要的自动增量ID,如下所示:

结果

id      | idusers | idgames
--------+---------+----------
        |         | 
        |         | 
        |         | 

用户

id      | name    | 
--------+---------+
1       | todd    | 
2       | mario   | 
3       | luigi   | 

游戏

id      | play    | 
--------+---------+
1       | game1   | 
2       | game2   | 
3       | game3   | 

我想随机化用户ID和游戏ID,并在results表格中加入,如下所示:

结果

id      | idusers | idgames
--------+---------+----------
1       |  3      |  2
2       |  1      |  1
3       |  2      |  1 (also duplicates are ok)

我知道要随机使用它应该使用SELECT * FROM users ORDER BY NEWID()的ID,并将我需要使用的INNER JOIN

连接在一起

但是如何让它在一个查询中一起工作?

1 个答案:

答案 0 :(得分:0)

MySQL中的一种方法是使用rand()和相关的子查询:

select idusers,
       (select id from games order by rand() limit 1) as idgames
from users;

如果你有合理数量的数据(超过几千行),那么有更有效的方法。