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。
ModelType
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,自己在显示的界面中判断处理一下就好了。
SELECT ModelType.ModelType,COUNT(*)
FROM ModelType
LEFT OUTER JOIN Mobiles
ON ModelType.ModelTypeID=Mobiles.ModelTypeID
GROUP BY ModelType