我在数据库menagerie中有以下表格pet:

+--------+-------------+---------+------+------------+------------+
| name   | owner       | species | sex  | birth      | death      |
+--------+-------------+---------+------+------------+------------+
| Tommy  | Salman Khan | Lebre   | NULL | 1999-01-13 | 0000-00-00 |
| Bowser | Diane       | dog     | m    | 1981-08-31 | 1995-07-29 |
+--------+-------------+---------+------+------------+------------+

现在,如果我运行以下查询:

select owner, curdate() from pet;  

我得到以下输出:

+-------------+------------+
| owner       | curdate()  |
+-------------+------------+
| Salman Khan | 2016-09-12 |
| Diane       | 2016-09-12 |
+-------------+------------+

输出显示owner的所有值,以及每行curdate()返回的值.

现在,如果我运行以下查询:

select owner, count(*) from pet;  

我得到以下输出:

+-------------+----------+
| owner       | count(*) |
+-------------+----------+
| Salman Khan |        2 |
+-------------+----------+  

我的问题是,在第一个示例中,curdate()count()函数之间的区别是什么,这使得MySQL输出第二个owner Diane

推荐答案

COUNT()是一个聚合函数,通常与GROUP BY子句结合使用.

curdate()是输出当前日期的日期函数.

只有MySQL(据我所知)允许这种语法,而不使用GROUP BY子句.由于您没有提供,COUNT(*)将统计表中的行总数,owner列将随机/优化器默认/按索引 Select .

这应该是您的查询:

select owner, count(*) 
from pet
group by owner;

它告诉优化器对each个所有者的总行进行计数.

如果未提及GROUP BY子句-聚合函数将应用于表的整个数据.

EDIT: A count that will be applied on each row can't be normally done with COUNT() and usually used with an analytic function -> COUNT() OVER(PARTITION...) which unfortunately doesn't exist in MySQL. Your other option is to make a JOIN/CORRELATED QUERY for this additional column.

Another Edit:如果要对每个所有者旁边的总数进行计数,可以使用子查询:

SELECT owner,
       (SELECT COUNT(*) FROM pet) as cnt
FROM pet

Database相关问答推荐

1-2400之间格式奇怪的时间数据

java嵌入式库磁盘键值数据库

从 DbDataReader 读取数据的最快方法是什么?

类似 Hibernate 的 C++ 框架

按请求的可变事务隔离级别

ORM vs 传统数据库查询,它们的字段是什么?

ORM 性能成本

无法启动 MongoDB:Windows 中的系统错误 1067

SQL Server 简单插入语句超时

返回 SQLite 数据库中表大小的查询

如何使用 INSERT ... ON CONFLICT ... 更新所有列?

如何用 SQL 思考?

Hibernate如何连接多个数据库

C++ SQL 数据库库比较

使用默认路径中的文件创建数据库

Django Atomic Transaction 是否锁定数据库?

显式事务回滚是否必要?

使用 C3P0 的 JDBC 连接池

可以将 SQLAlchemy 配置为非阻塞吗?

位图索引有何帮助?