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 FROM
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,自己在显示的界面中判断处理一下就好了。本回答被提问者采纳
参考技术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的行的主要内容,如果未能解决你的问题,请参考以下文章

选择 Count (distinct col) 查询以显示结果中的行数和列数 - postgresql

sql语句中count(0)和count(1)的区别

sql中 count(*) 和 count(1)什么区别?

获取 Java 结果集中的行数

SQL 结果中选择的行

SQL问题求助,查询结果如何清除NULL的空值