MySQL加入并选择随机字段

时间:2017-04-21 02:55:33

标签: mysql sql

我想连接两个表并从第二个表中返回一个随机字段,因为加入时有多个匹配。

例如。我有一个users表和一个user_posts表。我想选择每个用户的id,以及id表中随机发布的message和帖子user_posts。每个用户可以在user_posts表中拥有多个帖子。

This answer解释了我正在尝试做什么,但它不起作用。这是我的疑问:

SELECT user_id, post_id, message FROM (
    SELECT users.id AS user_id, user_posts.id AS post_id, message
    FROM users INNER JOIN user_posts ON users.id = user_id
    ORDER BY RAND()
) AS a GROUP BY user_id

为了进行测试,我在user_posts表中添加了两行,其中id为1的用户,但每次都检索相同的帖子。

1 个答案:

答案 0 :(得分:0)

使用交叉申请获取随机的一个帖子并加入用户以显示

 select u.id,RandomPostbyUser.* 
     from users u
     cross apply (     
        SELECT  user_posts.id AS post_id, message
        FROM users u1 INNER JOIN user_posts ON u1.id = u.id
        order by RAND()
        LIMIT 1) RandomPostbyUser