gpt4 book ai didi

mysql - 从mysql中的另一个表加入一行

转载 作者:行者123 更新时间:2023-11-29 05:32:39 25 4
gpt4 key购买 nike

我在执行以下操作时遇到问题:

我需要从产品表中选择所有产品,对于每个产品,我需要从图像表中加入主图像(所有列)。产品图像表包含图像-产品关系和列 sortWeight。主图像是具有最小 sortWeight 的图像。

要获取主要产品图片,我会这样做:

SELECT * FROM images WHERE product=SOME_PRODUCT ORDER BY sortWeight ASC LIMIT 1;

获取所有产品:

SELECT * FROM products;

现在我需要以某种方式加入这两个,但问题是我不知道如何绕过以下限制:

SELECT P.* FROM products AS P 
LEFT JOIN
(SELECT * FROM images AS I WHERE I.product=P.id ORDER BY sortWeight ASC LIMIT 1) AS I1

问题是 MySQL 不知道子查询中的 P.id 是什么。我也试过这样:

SELECT P.* FROM products AS P 
LEFT JOIN
(SELECT * FROM images AS I WHERE ORDER BY sortWeight ASC LIMIT 1) AS I1 ON (I1.product = P.id)

但我认为这不会给出准确的结果,因为子查询存在限制,它可能会从另一个具有较小 sortWeight 的产品中选择图像。

谁能帮我改写这个?谢谢。

最佳答案

尝试将其加入子查询,该子查询返回每个 product 具有最小 (min) sortWeight 的图像。

这将返回每个产品的最小 sortWeight:

select product, min(sortWeight) as sortWeight
from images
group by product

这是组合版本:

SELECT P.*, i.*
FROM products AS P
left join images as i on p.id = i.product
LEFT JOIN (
select product, min(sortWeight) as sortWeight
from images
group by product
) t on t.product = i.product and i.sortWeight = t.sortWeight

关于mysql - 从mysql中的另一个表加入一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13475047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com