sql怎么查询一共有多少行?

i=SELECT count(1 ) 返回查询中的总行数。
COUNT() 返回所有记录的数量。
COUNT(DISTINCT) 返回具有唯一值的记录数。
问题是:COUNT() 使用不当可能会返回不必要的大量数据。
不要相信:COUNT() 和 COUNT(column_name) 之间没有区别。
不要这样做:在使用 COUNT 函数之前明确查询要求。

关于SQL的Count函数

说白了,SQL的Count函数其实很简单,就是用来计数的。
它主要有两个用途:一是统计整个表中的所有行,而不管这些行中的数据是否为空;另一种是统计特定列中非空值的数量。
我们先来说说最重要的事情。
如果在 SELECT 语句中使用 Count,请记住列名必须出现在 GROUP BY 中,否则结果可能不正确。
我们去年运行的项目有大约 3 000 个级别的数据。
因为我们没有注意这个细节,差点出了大问题。

一开始我以为伯爵只是在数数,但后来意识到这是错误的。
还可以与 GROUP BY 结合,按列对值进行分组,然后统计每组的行数。
例如,SELECT name, COUNT() FROM tablename GROUP BY name,这将告诉您每个名称值在表中出现的次数。

等等,还有一件事,Count函数在查询数据方面有很多应用场景,比如统计每个类别中的项目数量或者计算非空值的比例。
很多人没有注意到这一点,但我认为值得一试。

最后,提醒一下,在使用Count函数时,一定要遵守规则,并确保列名使用正确,以免得到错误的结果。

关于SQL函数count(*)的使用!

老实说,CASE 和 SUM 的 SQL 组合效果很好。
当我第一次接触 SQL 时,面对这些类型的条件统计,我立即感到困惑。
最后向有经验的人请教才知道如何调整。

有趣的是,你给出的例子非常具体。
以您提到的“员工”表为例。
假设这是一家公司的人力资源系统表。
所有字段名称均采用大写字母。
C是部门,D是岗位。
如果您想统计销售部门的销售经理人数,可以使用过滤条件A='销售'和B='销售经理'来精确捕获。
但请注意,如果表中“Sales”和“Sales Manager”全部大写字母存储,那么你的WHERE条件必须全部大写字母书写。
我当时就犯了这么低级的错误。
即使寻找了很长时间,也没有找到结果。
当我检查时,我发现字母大小写不匹配。

简单来说,CASE语句为SUM等聚合函数提供了判定条件。
它不能单独工作。
比如要统计“Employees”表中销售部门的人数,SQL就这样写: SQL 选择总和作为销售部门的人数(当 C='Sales' 时为 1 ,最后为 0) 从员工中
可以计算出销售部门的总人数。
如果再加一个条件,比如统计销售部门工资大于5 000美元的人员,就会用CASE需要添加另一层: SQL 选择总和作为高薪销售人员的数量(当 C='Sales' 且薪资>5 000 时,则以 1 和 0 结束) 来自工作人员
我没有亲自管理这个区域。
我记得数据是5 000左右,但是我建议你查一下具体的数字。
主要是了解CASE的嵌套使用。

有趣的是,一些数据库系统,例如Oracle,有更简洁的写入方法。
但大多数情况下,你的写作方式是最有利的。
记得在使用SQL Server的时候,有人坚持用IIF(C='Sales',1 ,0)而不是CASE,但是MySQL上就报错了。

我之前在使用数据仓库处理用户行为数据时也使用过类似的技术。
例如,要统计应用程序中点击“购买”按钮的用户数,SQL 如下所示: SQL 选择总和(当行为 = '购买' 时则 1 否则 0 结束)作为购买的用户数 从用户行为表来看 “2 02 3 -01 -01 ”和“2 02 3 -03 -3 1 ”之间的时间
当时表中有数百万条记录。
使用这种方法,它运行得更快。
也许数据仓库的索引得到了更好的优化。
但是,如果您在 OLTP 系统上运行这种类型的全表扫描查询,最好考虑下面的表大小。

总之,CASE和SUM的结合确实很强大,但是使用时要注意性能问题。
特别是如果嵌套过多,SQL 的可读性将会降低。
如果如果嵌套超过3 层,建议考虑重写逻辑。