gpt4 book ai didi

mysql - 基于左连接返回不同的记录

转载 作者:行者123 更新时间:2023-11-29 03:33:53 26 4
gpt4 key购买 nike

我在制定复杂的 SQL 查询时遇到了一些问题。我得到了我正在寻找的结果并且性能很好,但每当我尝试为我的 product_groups 的 LEFT JOIN 获取不同的行时,我要么遇到一些性能问题,要么得到不正确的结果。

这是我的查询:

 SELECT
pl.name, pl.description,
p.rows, p.columns,
pr.sku,
m.filename, m.ext, m.type,
ptg.product_group_id AS group,
FROM
product_region AS pr
INNER JOIN
products AS p ON (p.product_id = pr.product_id)
INNER JOIN
media AS m ON (p.media = m.media_id)
INNER JOIN
product_language AS pl ON (p.product_id = pl.product_id)
LEFT JOIN
products_groups AS ptg ON (ptg.product_id = pr.product_id)
WHERE
(pl.lang = :lang) AND
(pr.region = :region) AND
(pt.product_id = p.product_id)
GROUP BY
p.product_id
LIMIT
:offset, :limit

我得到的结果是正确的,但我只想为“组”返回不同的行。例如,我得到许多具有相同“组”值的结果,但我只希望显示第一行,而忽略具有相同组值的后续记录。

我尝试了 GROUP BY group 和 DISTINCT,但结果不正确。另请注意,该组可以返回为 NULL,我不希望这些行受到影响。

提前致谢。

最佳答案

我在发布此消息后一小时制定了解决方案。我的目标是首先按 product_group_id 分组,然后按单个 product_id 分组。要求是我要消除产品重复项并让一个产品代表组集。

我最终使用了 COALESCE(ptg.product_group_id, p.product_id)。这解释了这样一个事实,即除了少数分散的产品外,我的大多数组 ID 都是空的。在使用 COALESCE 时,我首先按组 ID 分组,如果该值为 null,它会忽略该组并按 product_id 收集。

关于mysql - 基于左连接返回不同的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26366313/

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