我最近在一次采访中被问到这个问题.

推荐答案

实际上什么都没有,除非您在表中指定一个字段,或者在parantesse中指定一个表达式,而不是常量或*

让我给你一个详细的回答.Count将为您提供给定字段的非空记录编号.假设您有一个名为a的表

select 1 from A
select 0 from A
select * from A

将返回相同数量的记录,即表A中的行数.输出仍然不同.如果表中有3条记录.以X和Y作为字段名

select 1 from A will give you

1
1
1

select 0 from A will give you
0
0
0

select * from A will give you ( assume two columns X and Y is in the table )
X      Y
--     --
value1 value1
value2 (null)
value3 (null)

因此,这三个查询都返回相同的数字.除非你用

select count(Y) from A 

因为只有一个非空值,所以输出值为1

Mysql相关问答推荐

创建从表中筛选数据的过程时出错

如何计算超过特定数字的所有不同ID组,然后返回这些ID?

默认情况下,MariaDB是否限制为本地主机?

使用mysql查询获取不关注user1的user3

如果其中一个表为空,则 mysql 中的查询会给出 0 个结果

global max_connections 和 spring.hikari.maximumPoolSize 有什么区别?

根据 JOIN 结果计算列中的值?

错误1075:表定义不正确;只能有一个自动列,它必须定义为一个键(使用 gorm 和 mysql)

如何根据 R 中的价格范围将数据从一列复制到新列?

Django中的MYSQL查询等效

如何解决这个特定的 SQL 查询?我的解决方案还返回不想要的值

根据使用 mysql 的第一个过滤结果添加更多表行

错误 1396 (HY000): 'user'@'localhost' 的操作 DROP USER 失败

从终端访问 MAMP 的 MySQL

mysql 按日期 Select 总和组

在 MySQL 中检测 utf8 损坏的字符

Sequelize Query 查找日期范围内的所有记录

SQL WHERE 列 = 一切

设计用户角色和权限系统的最佳实践?

按 COUNT(*) 过滤?