Mysql 查询返回不包含数据的字段
我有一个查询,它对两个表进行比较,并返回这些结果中的最小值 问题是,我使用的是内部联接,如果没有匹配的行,即该行不存在,则该字段为空 我想知道是否有办法修改它,这样如果该行不存在,它仍然会返回一个值 这是我的疑问:Mysql 查询返回不包含数据的字段,mysql,Mysql,我有一个查询,它对两个表进行比较,并返回这些结果中的最小值 问题是,我使用的是内部联接,如果没有匹配的行,即该行不存在,则该字段为空 我想知道是否有办法修改它,这样如果该行不存在,它仍然会返回一个值 这是我的疑问: SELECT MIN(quantity_per_one * 5 < quantity) AS has_enough FROM costs INNER JOIN user_ingredients USING (IngredientID) 用户可用成分表 ID | UserID
SELECT MIN(quantity_per_one * 5 < quantity) AS has_enough
FROM costs
INNER JOIN user_ingredients USING (IngredientID)
用户可用成分表
ID | UserID | IngredientID | quantity
1 | 2 | 6 | 100
您可以使用
左连接
和合并()
:
选择合并(最小值)(数量每1*5您使用的是哪种RDBMS?我不知道您的意思?如果答案是MYsql的话@GoatCO@Dave您正在使用SQL Server?、MySQL?、Oracle?、Postgres?…并告诉我们版本。哦,您还可以告诉我们这些列属于哪个表。好的,我正在使用MySQL。我将发布有问题的表和字段。RDBMS=关系数据库管理系统=SQL Server、MySQL等。如果使用COALESCE
而不是ISNULL
,则会出现这种情况。(好的,对于不可知的查询,您还应该在costs上使用。IngredientID=user\u components。IngredientID
我可以问一下COALESCE
以前没有看到的是什么。COALESCE
返回序列中的第一个非空值,在这种情况下,如果quantity\u per\u one
是NULL
它返回0。)
@GoatCO-hmm在进一步测试后,它似乎会返回1
,即使用户没有表中的成分=/I不完全理解您的初始查询,带有
ID | UserID | IngredientID | quantity
1 | 2 | 6 | 100
SELECT COALESCE(MIN(quantity_per_one * 5 <= quantity),0) AS has_enough
FROM costs
LEFT JOIN user_ingredients USING (IngredientID)
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