gpt4 book ai didi

mysql - 查询返回一个不包含数据的字段

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

我有一个查询,它对两个表进行一些比较,并返回这些结果中的最小值。

问题是,我正在使用内部联接,如果没有匹配的行(即该行不存在),则该字段为空。

我想知道是否有办法改变它,这样如果该行不存在,它仍然会返回一个值。

这是我的查询:

SELECT MIN(quantity_per_one * 5 < quantity) AS has_enough
FROM costs
INNER JOIN user_ingredients USING (IngredientID)

如果用户没有成分,则该行不存在,这会导致 has_enough 不等于任何内容。我该如何调整它,使其变为 0

表结构:

成本表

//note there can be multiple ingredients per materialID
ID | materialID | IngredientID | quantity_per_one
1 | 5 | 6 | 60
1 | 5 | 3 | 10
<小时/>

用户可用成分表

ID | UserID | IngredientID | quantity
1 | 2 | 6 | 100

最佳答案

您可以使用LEFT JOINCOALESCE():

SELECT COALESCE(MIN(quantity_per_one * 5 <= quantity),0) AS has_enough
FROM costs
LEFT JOIN user_ingredients USING (IngredientID)

更新:

您需要一个 CASE 语句来执行您所追求的操作:

SELECT MIN(CASE WHEN quantity IS NULL THEN 0
ELSE quantity_per_one * 5 < quantity
END) as 'has_enough'
FROM costs c
LEFT JOIN user_ingredients ui
ON c.IngredientID = ui.IngredientID

演示:Sql Fiddle

关于mysql - 查询返回一个不包含数据的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17663149/

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