如果组聚合导致零记录而不是具有空值和0的单个记录,SQL Server是否有办法不返回任何记录?
问题SQL语句:
select
Max(InterfaceID), Count(*)
from
(select InterfaceID
from interface
where interfaceid = 99) as Interfaces
问题结果
+-------+---------+
| i_max | i_count |
+-------+---------+
| NULL | 0 |
+-------+---------+
如果指定了分组的示例
select
Max(InterfaceID), Count(*)
from
(select InterfaceID
from interface
where interfaceid = 99) as Interfaces
group by
interfaceid
结果:
+-------+---------+
| i_max | i_count |
+-------+---------+
你能用第一个查询得到第二个结果,没有指定任何一个组吗?
这都是因为Entity Framework模型和数据处理空数组而不是数组1记录,但用处不大。
答案 0 :(得分:2)
你可以修改你的查询,如 -
select Max(InterfaceID), Count(*)
from (
select InterfaceID from interface where interfaceid=99
) as Interfaces
having Max(InterfaceID) is not null
答案 1 :(得分:0)
作为HAVING
的替代方法,您还可以添加GROUP BY ()
- 如果输入中没有匹配的行,则下面将返回0行,否则单行结果会聚合输入中的所有行
SELECT MAX(InterfaceID),
COUNT(*)
FROM (SELECT InterfaceID
FROM interface
WHERE interfaceid = 99) AS Interfaces
GROUP BY ()