gpt4 book ai didi

Mysql If条件INNER JOIN

转载 作者:行者123 更新时间:2023-11-29 01:28:58 25 4
gpt4 key购买 nike

以下请求为我提供了产品列表、销售这些产品的商店以及我需要用于其他目的的“父”商店:

SELECT  `allproducts`.`id_store` ,  `uniques` . * 
FROM `uniques`
INNER JOIN `allproducts` ON `allproducts`.`SKU` = `uniques`.`SKU`

结果如下:

id_store SKU     id_parent name      sale_sdate  sale_edate
1085 100768 1088 productA 5/18/2014 6/14/2014
1088 100768 1088 productA 5/18/2014 6/14/2014
1089 100768 1088 productA 5/18/2014 6/14/2014

您可以看到在第二行,id_store 和 id_parent 是相同的(父商店也销售该产品)。在这种情况下,我应该像这样用 0 替换 id_parent :

id_store SKU     id_parent name      sale_sdate  sale_edate
1085 100768 1088 productA 5/18/2014 6/14/2014
1088 100768 0 productA 5/18/2014 6/14/2014
1089 100768 1088 productA 5/18/2014 6/14/2014

我很难将 IF 条件集成到这个大请求中(我可以在这里发布我尝试过的所有内容,但这可能会使事情变得非常困惑)。谁能帮忙?

最佳答案

使用CASE。如果没有其他条件,则删除 WHERE 子句。

SELECT  `allproducts`.`id_store`, `uniques`.SKU,
CASE WHEN `allproducts`.`id_store`=`uniques`.`id_parent` THEN 0 ELSE `uniques`.`id_parent` END as id_parent,
`uniques`.`name`,`uniques`.`sale_sdate`,`uniques`.`sale_edate`
FROM `uniques`
INNER JOIN `allproducts` ON `allproducts`.`SKU` = `uniques`.`SKU`

解释:

如果id_store等于id_parent,它将选择0。否则,它将选择id_parent本身。

编辑:

我想用别名重写您的查询以提高可读性。

SELECT  ap.`id_store`, u.SKU,
CASE WHEN ap.`id_store`=u.`id_parent` THEN 0 ELSE u.`id_parent` END as id_parent,
u.`name`,u.`sale_sdate`,u.`sale_edate`
FROM `uniques` u
INNER JOIN `allproducts` ap ON ap.`SKU` = u.`SKU`

关于Mysql If条件INNER JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24078741/

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