2017-04-21 99 views
0

我想加入兩個表並從第二個表返回一個隨機字段,因爲加入時有多個匹配。MySQL加入並選擇隨機字段

例如。我有一個users表和user_posts表。我想要選擇每個用戶的id以及他們在user_posts表中的隨機帖子id和帖子的message。每個用戶在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表添加兩行用戶用1 id但它的每一次檢索同一職位。使用

回答

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 
+0

我不明白,這甚至不編譯? – user1203585

+0

再試一次,請發佈錯誤 – maSTAShuFu

+0

現在就開始工作,但它會爲每個用戶返回所有帖子。我只想要一個隨機的。 – user1203585