代码之家  ›  专栏  ›  技术社区  ›  Hursey

SQL计数说明

  •  0
  • Hursey  · 技术社区  · 7 年前

    可能有点离题,希望你能帮我解决一些争论。

    故事是,我正在使用一个第三方应用程序,它有自己的内置SQL查询引擎。此应用程序的开发人员100%确信他们的SQL实现符合所有标准。我相信没有。

    Select Count(*) 
    From TableName 
    Where id = 1000
    

    但是,如果没有id为1000的记录,则在结果集中得到0条记录。我认为我应该得到一个0值的记录,但第三方开发人员说,这是正确的。

    https://www.w3resource.com/sql/aggregate-functions/count-function.php

    老实说,我不确定它到底有多“官方”。

    我是对的还是搞错了?

    1 回复  |  直到 7 年前
        1
  •  4
  •   Gordon Linoff    7 年前

    w3resource.com 或 w3schools.com

    The SQL-92 specification COUNT(*) 根据第6.5节。 6.5 <set function specification> AVG MAX , MIN , SUM ,和 COUNT 计数(*)

    的论点 计数(*) 以及 <general set function> 是子条款7.8“和子条款7.9”中规定的一个表或一组分组表 <query specification> ".

    让 T 是一个问题的论据或论据来源 <set function specification> .

    已指定, 那么结果就是 T .

    就你而言:

    • “参数源”是 FROM tableName WHERE id = 1000 T .
    • 返回零个结果,则该结果的基数为零 0
    • 所以呢 将返回值 0 NULL 要么,即。 计数(*) 从不计算为 顺便说一句)所以你是正确的:你必须有一个结果行,而不是零行。所以他错了。

    我通常不会这样做,但表达这一点的简单方法是不使用 group by 总是