gpt4 book ai didi

mysql - 有条件的连接表

转载 作者:行者123 更新时间:2023-11-29 02:04:37 24 4
gpt4 key购买 nike

我在连接表时遇到问题。

我有两个表:product_commons 和 product_prices。 Product_prices 包含标准产品价格 + 预生成的事件价格 (campaign_id) 的记录。我需要一个查询,该查询返回包含事件价格(如果存在)或标准价格(如果不存在)的产品列表。

像这样:

SELECT * FROM product_commons 
INNER JOIN product_prices ON product_commons.id = product_prices.product_id
WHERE (campaign_id = 3 OR campaign_id IS NULL)
GROUP BY product_commons.id

不幸的是,这个查询只返回 campaign_id = NULL 的价格。

最佳答案

您需要将 INNER 和 LEFT (OUTER) JOIN 与 COALESCE 混合使用,并在 JOIN 条件中使用 campaign_id 过滤器。要将不同行的 2 个价格合并到一行中,您需要 2 个 JOIN。

SELECT
*,
COALESEC(pstd.price, pc.price)
FROM
product_commons pc
JOIN
product_prices pstd ON pc.id = pstd.product_id AND pstd.campaign_id IS NULL;
LEFT JOIN
product_prices pp ON pc.id = pp.product_id AND pp.campaign_id = 3;

您也不需要 GROUP BY:在标准 SQL 或其他 RDBMS 中它没有意义(并且会给出像这样使用的错误)

关于mysql - 有条件的连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8699974/

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