SQL语句问题,LEFT JOIN 右表多条数据解决方案

[ 2019-08-14 16:13:18 | 作者: admin ]
字号: | |
p.s. 方法就是先写好普通left join语句,然后把结果作为临时表,进行group by [重复键]
select * from (
原语句...
) as tmp_table GROUP BY tmp_table.mid


用到SQL中的LEFT JOIN时,在右表中存在多条记录,即一对多的情况时, 直接使用left join会出现一对多的结果
attachments/201908/14_161218_20180708160131293.jpg



发现一对多关联然后全部查询出来了。
现在只需要改查询商品的最后一张图片,入商品1对应的商品图片3。
方案1:
先按图片降序排序,然后按商品id进行分组,即得每一个商品的最后一张图片信息。
SELECT * FROM (SELECT * FROM image ORDER BY id DESC) AS temp_image GROUP BY temp_image.productId

方案2:
根据产品id分组求出每个分组的最大图片id,在外面套一层查询图片信息即可
SELECT * FROM image WHERE id IN (SELECT CONCAT(MAX(id),',') AS id FROM image GROUP BY productId)


执行结果:
attachments/201908/14_161311_20180708164805190.jpg




原文链接:https://blog.csdn.net/BtWangZhi/article/details/80960522
[最后修改由 admin, 于 2019-08-14 16:23:23]
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=2611

这篇日志没有评论。

此日志不可发表评论。