php - 查询左连接部分的限制值

标签 php mysql

请我使用 LEFT JOIN 将四个表连接在一起,图像表通过 img_item 链接到项目表,因此每个项目可以有更多图像。我只想获取每个项目的第一张图像。我该如何实现这一目标。

 SELECT   * FROM items
 LEFT JOIN category ON items.item_cat = category.cat_id
 LEFT JOIN users ON users.user_id=items.item_user
 LEFT JOIN institutions ON institutions.inst_id=users.user_inst 
 LEFT JOIN images ON images.img_item = items.item_id
 ORDER BY item_id DESC

最佳答案

在MySQL中,您可以使用变量枚举结果,然后选择第一个。另一种选择是确定您想要哪个,然后选择那个。下面选择id最大的图片:

SELECT *
FROM items LEFT JOIN
     category
     ON items.item_cat = category.cat_id LEFT JOIN
     users
     ON users.user_id=items.item_user LEFT JOIN
     institutions
     ON institutions.inst_id = users.user_inst LEFT JOIN
     images
     ON images.img_item = items.item_id AND
        images.img_id = (SELECT MAX(i2.img_id)
                         FROM images i2
                         WHERE i2.img_item = images.img_item
                        );
ORDER BY item_id DESC

关于php - 查询左连接部分的限制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42176362/

相关文章:

php - MySQL/PHP 查询反向关系

PHP 正在插入两条记录

php - 在附加的 <li> 元素上添加工具提示不起作用

mysql - 在 My SQL 中,我希望用户限制删除表和删除数据库

mysql - MySQL 查询出现问题

php - 408 HTTP 错误尝试使用负载均衡器访问 AWS 弹性 beanstalk 上的 https

php - 如何删除 URL codeigniter 中的特殊字符

php - 如何将 mysql 表导入 SOLR

sql - GRANT 语句中的通配符?

php - 加载动态选择 - PHP VS AJAX