gpt4 book ai didi

mysql - 嵌套 mysql 的情况

转载 作者:行者123 更新时间:2023-11-30 01:36:16 26 4
gpt4 key购买 nike

 SELECT    ( CASE 
WHEN 1944.0000 >= country_from_price
AND 1944.0000 <= country_to_price
THEN ((1944.0000 + ((1944.0000 * country_percentage)/100)))
ELSE 1944.0000
END
)
FROM `country_markup`
WHERE estatus = '1'
AND country_id REGEXP '[[:<:]]138[[:>:]]'

以上查询返回值增加了百分比,但如果条件未完全满足,则返回 NULL。我想要的是如果查询返回 NULL 值,那么它应该返回 1944.0000为此,我尝试了下面的代码,但没有取得任何成功

SELECT  IF( (SELECT (CASE 
WHEN 1944.0000 >= country_from_price
AND 1944.0000 <= country_to_price
THEN ((1944.0000 + ((1944.0000 * country_percentage)/100)))
ELSE 1944.0000
END
) as f1
FROM `country_markup`
WHERE estatus = '1'
AND country_id REGEXP '[[:<:]]223[[:>:]]') IS NOT NULL, f1 ,1944.0000) as final_price

提前致谢

最佳答案

这似乎适用于COALESCE(假设您的原始查询只能返回一条记录):

SELECT COALESCE((
SELECT
CASE WHEN 1944.0000 >= country_from_price AND 1944.0000 <= country_to_price
THEN ((1944.0000 + ((1944.0000 * country_percentage)/100)))
ELSE 1944.0000
END
FROM `country_markup`
WHERE estatus = '1'
AND country_id REGEXP '[[:<:]]138[[:>:]]'), 1944.0000) final_price

您可以将 LIMIT 1 添加到子查询中,以确保它在需要时也只返回单个记录。

<小时/>

这是使用 MAXCOALESCE 聚合的替代方案:

  SELECT    
COALESCE(MAX( CASE WHEN 1944.0000 >= country_from_price AND 1944.0000 <= country_to_price
THEN ((1944.0000 + ((1944.0000 * country_percentage)/100)))
ELSE 1944.0000
END ),1944.0000) final_price
FROM `country_markup`
WHERE estatus = '1'
AND country_id REGEXP '[[:<:]]138[[:>:]]'

关于mysql - 嵌套 mysql 的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16838019/

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