php - 如何使用 INNER JOIN 为每个用户获取 1 行

标签 php mysql inner-join distinct resultset

我有两个表,一个是user,另一个是images。我为用户提供了选择多个图像的选项。我可以在数据库中存储具有相同 user_id 的多个图像,但是当我尝试从每个用户获取一张图像时,我会获取所有图像。

我的查询是这样的:

$query = "
SELECT * 
  FROM images i
  JOIN users u
    ON u.user_id = i.user_id 
 LIMIT 1";

当我在 while() 循环中运行此查询时,我只从 images 表中获取第一个图像。

如果我无法澄清我想问的问题,我真的很抱歉。

最佳答案

你有没有尝试过这样的事情:

SELECT * FROM users u INNER JOIN images i ON u.user_id = i.user_id GROUP BY u.user_id;

对于每个拥有图像的用户,这应该只从用户/图像表中返回一条记录。

不要在 while 循环中运行查询。相反,使用一个查询即可获取所有所需的记录。

如果您坚持在循环中运行查询,那么您的查询中会缺少 WHERE users.user_id = ? 部分,因此您可以为循环中的每个用户获得不同的结果。

关于php - 如何使用 INNER JOIN 为每个用户获取 1 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43627275/

相关文章:

javascript - 单击按钮时执行脚本标签

mysql - 使用总和和计数连接三个表

javascript - 从 SQL/PHP 到 Javascript 获取日历事件

r - 在 R 中使用条件进行内部连接

sql - 在 SQL 中,如何从包含图书馆表和图书表的数据库中创建包含图书数量的图书馆列表?

PHP - 如果变量为零或不为零,则显示不同的 html

php - #1045 无法在 wamp 中登录 MySQL 服务器

php - 为 codeigniter 的电子邮件收件人设置名称(别名)

mysql - 如果我将 int(255) 存储在 MySQL 中,MAX 数是多少?

sql - 派生表的内部连接