gpt4 book ai didi

MySQL 格式良好的查询不会使用 equal 和 Between 检索任何结果

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

所以,将这些行放在表格上

## raw_material_costs ##
id code family material min_size max_size value
651 100005 sleeve SAE 1020 1.21 1.24 4.48882
659 100006 sleeve SAE 1020 1.21 1.24 6.62878

直接在 SQL 选项卡上运行以下查询不会返回任何这些行。如果值(在本例中为 1.21)等于 min_size 或介于 min_sizemax_size 之间,我想获取该行。 (之前尝试过使用BETWEEN比较,得到了相同的结果)

SELECT * FROM (`raw_material_costs`) 
WHERE `raw_material_costs`.`family` = 'sleeve'
AND `raw_material_costs`.`material` = 'SAE 1020'
AND (
( `raw_material_costs`.`min_size` = '1.21' )
OR ( `raw_material_costs`.`min_size` >= '1.21' AND `raw_material_costs`.`max_size` <= '1.21' )
)

EDIT1:忘记提及所使用的值。

修复了查询(cjg 指出的解决方案[如下所示])

SELECT *
FROM (`raw_material_costs`)
WHERE `raw_material_costs`.`family` = 'sleeve'
AND
`raw_material_costs`.`material` = 'SAE 1020'
AND (
(
CAST( `min_size` as DECIMAL(10,2) ) =
1.21
)
OR (
CAST( `min_size` as DECIMAL(10,2) ) >= '1.21'
AND CAST( `max_size` as
DECIMAL(10,2) ) <= '1.21'
)
)

最佳答案

您将 min_size 和 max_size 视为 SQL 查询中的文本字符串,请尝试从最小和最大大小中删除撇号:

正如 Gorkk 在评论中指出的那样,您还按 1.21 而不是 1.24 过滤了 max_size。

SELECT * FROM (`raw_material_costs`) 
WHERE `raw_material_costs`.`family` = 'sleeve'
AND `raw_material_costs`.`material` = 'SAE 1020'
AND (
( `raw_material_costs`.`min_size` = 1.21 )
OR ( `raw_material_costs`.`min_size` >= 1.21 AND `raw_material_costs`.`max_size` <= 1.24 )
)

关于MySQL 格式良好的查询不会使用 equal 和 Between 检索任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21994617/

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