我的问题是如果我的表是空的,或者我使用max函数的列没有我指定的值,那么为什么sqlDataReader.hasRows为TRUE?
它给出了一个空记录......我该如何解决这个问题?
提前致谢。
答案 0 :(得分:5)
像MAX()这样的聚合函数将始终每组返回一行。在您的情况下,您的组是整个表。因此,您获得具有MAX值的一行结果集。由于您的表中没有数据,因此MAX值未定义,因此为NULL。
为了更好地理解,尝试用COUNT替换MAX。这也将返回一行,但值为0.我认为这更直观,可以帮助您更好地了解正在发生的事情。
答案 1 :(得分:2)
查询派生表并过滤掉主查询中的null
值。
select T.MaxValue
from (
-- Your query goes here
select max(Value) as MaxValue
from YourTable
where SomeCol > 10
) as T
where T.MaxValue is not null
答案 2 :(得分:0)
你可以使用:
从tbl
中选择top(从tbl中选择COUNT(*))max(field)
答案 3 :(得分:0)
或者,使用HAVING子句,因为HAVING可以与聚合函数一起使用:
select max(Value) from YourTable where SomeCol > 10
HAVING max(Value) is not null