SQL中如何显示COUNT结果为0的行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL中如何显示COUNT结果为0的行相关的知识,希望对你有一定的参考价值。
执行
SELECT ModelType.ModelType,COUNT(*)
FROM ModelType,Mobiles
WHERE ModelType.ModelTypeID=Mobiles.ModelTypeID
GROUP BY ModelType
后结果为
摩托罗拉(Motorola) 7
诺基亚(Nokia) 5
三星(Samsung) 6
松下(Panasonic) 5
索尼爱立信(SonyEricsson) 5
其中缺少一行在ModelType表中有数据而在Mobiles表中没有数据的记录,
想请问一下如何把该行数据的统计数字按0输出而不是直接不显示该行
SELECTModelType.ModelType,t1.count1FROM
ModelType
LEFTOUTERJOIN
(
SELECTModelTypeID,COUNT(*)ascount1
FROMMobiles
GROUPBYModelTypeID
)t1
ONt1.ModelTypeID=ModelType.ModelTypeID
注意:对于包含count1 0的行,SELECT的数据可能是NULL,但是可以在显示中处理它。
扩展资料:
函数的作用是:返回与指定条件匹配的行数。
语法
(1).SQLCOUNT(column_name)语法
COUNT(column_name)函数返回指定列的值的个数(NULL不计算):
从table_nameSQL中选择COUNT(column_name)
(2).TheCOUNT(*)grammar
COUNT(*)函数返回表中的记录数:
从table_nameSQL中选择COUNT(*)
(3).count(不同的column_name)语法
COUNT(DISTINCTcolumn_name)函数返回指定列的不同值的数目:
从table_name中选择COUNT(不同的column_name)
注意:COUNT(DISTINCT)适用于ORACLE和MicrosoftSQLServer,但不适用于MicrosoftAccess。
参考技术A SELECT ModelType.ModelType,t1.count1 FROMModelType
LEFT OUTER JOIN
(
SELECT ModelTypeID ,COUNT(*) as count1
FROM Mobiles
GROUP BY ModelTypeID
) t1
ON t1.ModelTypeID = ModelType.ModelTypeID
我这里没有你的数据库,也不知道你的数据库类型,没法测试。不过大体就是这意思,无论count1是否大于零,均会包括所有的ModelType.ModelType。
注意,这样SELECT的数据,对于count1为0的行,其值可能为NULL,自己在显示的界面中判断处理一下就好了。本回答被提问者采纳 参考技术B 试一下外联接查询:
SELECT ModelType.ModelType,COUNT(*)
FROM ModelType
LEFT OUTER JOIN Mobiles
ON ModelType.ModelTypeID=Mobiles.ModelTypeID
GROUP BY ModelType
sql中 count(*) 和 count(1)什么区别?
count(*)可以统计所有的行数,包括为null的行
count(1)
统计的是第一个子字段的行数,为null的行数
不统计。
sql
语句中
有时候1
代表对应的
第一个字段,第二个字段
一次类推。 参考技术A 你建一个表,插入两行记录,一行为1,一行为空,然后你去看看
count(*)
和
count(1)
发现结果不一样,就知道意思了 参考技术B 聚合函数的参数在不同的函数中代表的意义是不同的:
max(1)中
1:表示为订制1;
sum(1)中
1:表示为行数;
count(1)中
1:表示为所有行,在这里的所有数字都可以看作
*
;
以上是关于SQL中如何显示COUNT结果为0的行的主要内容,如果未能解决你的问题,请参考以下文章