Mysql - 从一个表中选择一个随机行,并将其连接到另一个表中的三行

时间:2011-08-19 18:52:57

标签: mysql

我有两张桌子。

一个是持有游戏的头衔。 另一个是持有玩这些游戏的用户的排名。

SELECT r.game, u.username, r.userid, r.points
FROM tbl_game g
INNER JOIN tbl_ranking r ON r.game = g.name
INNER JOIN tbl_users u ON u.id = r.userid
WHERE g.active = '1'
AND r.type = '1'
ORDER BY rand( ) , r.points
LIMIT 3 

这是我的尝试。

我要做的是从tbl_game表中选择一个随机行,然后将其连接到tbl_ranking表中的三个最佳用户。

例如,如果随机选择了Madden,它会为该游戏找到最好的3个用户并将其返回。

知道如何在一个查询中执行此操作吗? 有可能吗?

由于

EDIT 我现在尝试了我认为正确的方法。 我有语法错误,如果有人可以帮忙吗?

SELECT userid, points(
     SELECT name
     FROM tbl_game
     WHERE active = '1'
     ORDER BY rand( )
     LIMIT 1
     ) AS randgame
FROM tbl_ranking
WHERE TYPE = '1'
AND game = randgame
ORDER BY points DESC LIMIT 3

编辑...需要在查询中添加更多内容

需要从tbl_format中选择Xbox 360或Playstation 3,并确保只对两者上的用户进行比较。

SELECT r.game, u.username, r.userid, r.points
FROM tbl_ranking r
INNER JOIN tbl_users u ON u.id = r.userid
WHERE r.type = '1'
AND r.game = (
       SELECT name
       FROM tbl_game
       WHERE active = '1'
       ORDER BY rand( )
       LIMIT 1 )
AND u.format = (
       SELECT format
       FROM tbl_format
       WHERE active = '1'
       ORDER BY rand( )
       LIMIT 1 )
ORDER BY r.points DESC
LIMIT 3 

这个想法是你加入到他们有一个字段format的用户表中,他们要么是ps3,要么是xbox360。因此,当您运行查询时,从tbl_format表中选择ps3或xbox360,将其与用户名进行比较,并在一个控制台上选择三个用户,或从随机选择的游戏中选择另一个用户!

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:2)

SELECT userid, points
FROM tbl_ranking
WHERE TYPE = '1'
AND game = (SELECT name
     FROM tbl_game
     WHERE active = '1'
     ORDER BY rand( )
     LIMIT 1
     )
ORDER BY points DESC LIMIT 3

我认为这就是你想要的

答案 1 :(得分:0)

SELECT userid, points,开始(在点之后添加逗号)。