我想连接两个表并从第二个表中返回一个随机字段,因为加入时有多个匹配。
例如。我有一个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的用户,但每次都检索相同的帖子。
答案 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