MySQL 连接并选择随机字段

标签 mysql sql

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

例如。我有一个 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 表中为 id 为 1 的用户添加了两行,但每次都会检索相同的帖子。

最佳答案

使用交叉应用随机获取一篇帖子并加入到用户中显示

 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

关于MySQL 连接并选择随机字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43533162/

相关文章:

mysql - 无法连接 : Lost connection to MySQL server at 'reading initial communication packet' , 系统错误:0

php - 使用 PHP 在 AWS DynamoDB 中使用 JOIN 查询

javascript - Cassandra 错误: Undefined column name apparently due to case sensitivity despite consistent case in JavaScript

sql - 使用 XQuery 替换 SQL Server 中的 xml 命名空间前缀

sql - 错误: syntax error at or near "." LINE 4: ON like. takerId =frame.likeId;

mysql - 从 MySQL 表中删除唯一约束

php - MySQL 到 Codeigniter Active Record 删除重复记录

MySQL - 无法使用 count(*) 进行左外连接以返回 count = 0 的项目

python - Peewee 示例中带有主键的 SQL 语法错误

sql - Postgres : Foreign key doesn't match all rows