gpt4 book ai didi

mysql - 为什么当我使用 (select * 与 select uuid) 并在最后加上 order by 时会得到不同的结果?

转载 作者:行者123 更新时间:2023-11-29 11:26:55 24 4
gpt4 key购买 nike

我在 MySQL 中有两个 select 语句。第一:

select o.uuid
from wmsStockInBill o
where 1=1 and o.orguuid = '4028c08d555dfd9901555e1287f50002'
order by o.inDate desc`

我得到以下结果

uuids

第二:

select *
from wmsStockInBill o
where 1=1 and o.orguuid = '4028c08d555dfd9901555e1287f50002'
order by o.inDate desc

结果的uuid列是

uuid2

我已经使用了 order by,那么为什么两个 uuid 列的顺序不同呢?我认为MySQL从表中选择结果一定有一些原则,它是什么?

最佳答案

您获得不同 uuid 值的原因是您有多行具有相同的 inDate 最大值。

在 MySQL(以及一般的 SQL)中,排序不稳定稳定。当键值相等时,稳定排序会保留行的顺序。为什么关系数据库中的排序不稳定?简单:表格代表无序集合,因此没有已知的排序。

解决方案是包含一个附加的唯一键作为最后一个排序键。就您而言,这可能是:

order by o.inDate desc, uuid

关于mysql - 为什么当我使用 (select * 与 select uuid) 并在最后加上 order by 时会得到不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38066033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com