gpt4 book ai didi

mysql - 是否可以根据 "IF"语句在 SELECT 列之间进行更改?

转载 作者:行者123 更新时间:2023-11-29 09:44:14 24 4
gpt4 key购买 nike

我有一个“mapped_products”表:

product_id | price

“product_id_to_name”表:

product_id | product_name

(请不要问我为什么,这是我正在开发的一个已经构建的网络应用程序)。

“non_mapped_products”表:

product_id | product_name

和“orders_history”表:

prodeuct_id | order_date

我的任务获取之前订购的“product_names”列表(通过检查“orders_hisoty”表)。这是针对这种情况的查询:

SELECT `non_mapped_products`.`product_name` 
FROM `non_mapped_products`
WHERE EXISTS ( SELECT 1 FROM `orders_history` WHERE `orders_history`.`product_id` = `non_mapped_products`.`product_id`)

现在我注意到我的“mapped_products”表中的“non_mapped_pruducts”中有相同的产品 - 相同的“product_id”,不同的“product_name”:如果“product_name”存在于“mapped_products”表中,我想使用“product_name”,而不是“non_mapped_products”表中的“product_name” - 如果它们不存在,我想使用“non_mapped_products”中当前的“product_name”

我不太确定如何编写这种查询,它看起来像是带有内部联接的 select 下的 if/case 语句(?)

SELECT (IF 'mapped_products'.'product_id' USE 'product_id_to_name'.'product_name' ELSE `non_mapped_products`.`product_name` ) 
FROM `non_mapped_products`
WHERE EXISTS ( SELECT 1 FROM `orders_history` WHERE `orders_history`.`product_id` = `non_mapped_products`.`product_id`)

我将编辑我的帖子并添加一些我尝试过的不起作用的错误示例。

使用 MySQL 数据库。

SELECT

CASE
WHEN mapped_products.product_id = non_mapped_products.product_id
THEN product_id_to_name.product_name
ELSE
non_mapped_products.product_name
END
AS product_name

FROM non_mapped_products

INNER JOIN mapped_products
ON mapped_products.product_id = non_mapped_products.product_id
INNER JOIN product_id_to_name
ON product_id_to_name.product_id = mapped_products.product_id

WHERE EXISTS ( SELECT 1 FROM orders_history WHERE orders_history.product_id = non_mapped_products.product_id)

返回:仅从 mapped_products 表中重复产品名称

最佳答案

如果您将两个产品名称表LEFT JOIN添加到订单历史记录表(或提供product_id的任何其他表),您将可以访问这两个可能的名称。然后,您可以使用 COALESCE() 函数从两个名称列中获取第一个非空值。您可能想要创建一个 View ,以便在其他查询中更加方便。

关于mysql - 是否可以根据 "IF"语句在 SELECT 列之间进行更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55990625/

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