为什么此查询返回中间记录?

时间:2015-11-21 19:04:14

标签: mysql

我在MySQL上运行了一些无意义的查询,但由于每次输出都相同,我想知道是否有人可以帮我理解基础算法。

这是我们将执行查询的表 <div ng-repeat='item in groupedRange track by item.id'> <span>{{item.val}}</span> <span>{{item.abs}}</span> <span>{{item.rel}}</span> <span>{{item.cum}}</span> </div> (来自here的数据库,以防有人感兴趣):

Orders

目前有326条记录,最大+----------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------------+-------------+------+-----+---------+-------+ | orderNumber | int(11) | NO | PRI | NULL | | | orderDate | date | NO | | NULL | | | requiredDate | date | NO | | NULL | | | shippedDate | date | YES | | NULL | | | status | varchar(15) | NO | | NULL | | | comments | text | YES | | NULL | | | customerNumber | int(11) | NO | MUL | NULL | | +----------------+-------------+------+-----+---------+-------+ 为10425。

现在这是我运行的查询(基本上从合理的查询中删除了orderNumber):

GROUP BY

所以我要求总行数,以及mysql> select count(1), orderNumber, status from orders; +----------+-------------+---------+ | count(1) | orderNumber | status | +----------+-------------+---------+ | 326 | 10100 | Shipped | +----------+-------------+---------+ 1 row in set (0.00 sec) status,这可能是在给定情况下的任何事情。但是查询总是返回orderNumber,即使我退出并再次运行它。

对此有可预测的答案吗?

1 个答案:

答案 0 :(得分:1)

您的设计中没有可预测的答案。通常,DB将返回与查询匹配的第一行的值。如果你想要可预测性,你应该对每一列应用一个聚合(例如使用MIN或MAX来获得最小/最大值)