从一个表中选择 attachment_id 并在另一个表中选择 user_id

Posted

技术标签:

【中文标题】从一个表中选择 attachment_id 并在另一个表中选择 user_id【英文标题】:Select attachment_id from one table and user_id in another 【发布时间】:2014-07-12 15:54:24 【问题描述】:

我想从phpbb_attachments 中随机选择 5 个图像,并从phpbb_users 中显示作者用户名。

phpbb_attachments:        phpbb_topics_posted:        phpbb_users:

attach_id  topic_id       user_id  topic_id           user_id  username
1          10             21       10                 21       Tom
2          5              53       5                  53       Maria
3          15             11       15                 11       John

$result = mysqli_query($con,"SELECT * FROM phpbb3_attachments WHERE mimetype = 'image/jpeg' ORDER BY RAND() LIMIT 5");

【问题讨论】:

你的问题是什么? @GordonLinoff 显示图片附件和作者姓名 【参考方案1】:

你可以试试这个:

SELECT att.attach_id,
       u.username
FROM phpbb_attachments att
JOIN phpbb_topics_posted t ON (t.topic_id=att.topic_id)
JOIN phpbb_users u ON (u.user_id=t.user_id)
WHERE att.mimetype='image/jpeg'
ORDER BY rand() LIMIT 5

正如here 所说,最好避免使用ORDER BY RAND()。在那里寻找一些替代品。

另外,我只包含了您显示的字段,您应该对其进行调整以包含文件位置等字段。

最后但同样重要的是,您的示例查询引用了 phpbb3_attachments,并且示例数据使用了不同的名称。你应该相应地调整它。

希望这会有所帮助。

【讨论】:

以上是关于从一个表中选择 attachment_id 并在另一个表中选择 user_id的主要内容,如果未能解决你的问题,请参考以下文章

从嵌套的dict中选择一个随机值,并在另一个嵌套的dict中更新它

mySQL 从一个表中选择,该表在另一个表中不存在,并且不是第三个表中的子表

使用jpa注释在一个事务中保存数据并在另一个事务中获取数据

如何从表中选择哪个名称存储在另一个表中带有“0”前缀的列中

即使不是一个表中的所有行在另一个表中都有核心响应者,如何从 MySQL 中的两个表中进行选择?

从一个表中选择一个逗号分隔的值,并使用 SQL Server 中的函数在另一个表中的 where 条件中使用它