使用可能为null的聚合函数获取一行数据

时间:2014-12-09 14:56:42

标签: mysql aggregate-functions

我试图从我的数据库中检索包含min函数的信息,该函数可能为null,也可能不为null。我发现如果min为null则查询不会返回任何数据。

这是我目前的代码:

select store.StoreID, store.StoreManager,
  min(salesnumbers.totalsales)
from Store  
INNER JOIN salesnumbers on store.StoreID = salesnumbers.StoreID 
where store.StoreID = 17
GROUP BY StoreID;

我也尝试过:

select store.StoreID, store.StoreManager,
  min(IFNULL(salesnumbers.totalsales, "N/A")) 
from Store  
INNER JOIN salesnumbers on store.StoreID = salesnumbers.StoreID 
where store.StoreID = 17
GROUP BY StoreID;

这给了我相同的结果。任何建议都非常感谢。

1 个答案:

答案 0 :(得分:2)

您缺少组中的列,这会导致错误的结果。另外,使用外部连接:

select
    store.StoreID,
    store.StoreManager,
    min(salesnumbers.totalsales) totalsales
from Store  
left join salesnumbers on store.StoreID = salesnumbers.StoreID 
where store.StoreID = 17
group by 1, 2

注意更方便地使用列数字而不是组中的表达式(更容易编码,阅读并查看是否错过了一个)