我在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
,即使我退出并再次运行它。
对此有可预测的答案吗?
答案 0 :(得分:1)
您的设计中没有可预测的答案。通常,DB将返回与查询匹配的第一行的值。如果你想要可预测性,你应该对每一列应用一个聚合(例如使用MIN或MAX来获得最小/最大值)