我在MySQL中有两个select语句。第一:
select o.uuid
from wmsStockInBill o
where 1=1 and o.orguuid = '4028c08d555dfd9901555e1287f50002'
order by o.inDate desc`
我得到以下结果
第二
select *
from wmsStockInBill o
where 1=1 and o.orguuid = '4028c08d555dfd9901555e1287f50002'
order by o.inDate desc
结果的uuid列是
我已经使用order by
了,为什么两个uuid列的顺序不同?我认为MySQL必须有一些原则来从表中选择结果,它是什么?
答案 0 :(得分:1)
您获得不同uuid
值的原因是因为您有多行具有相同的最大值inDate
。
在MySQL(和一般的SQL)中,排序不是稳定。当键值相等时,稳定排序会保留行的顺序。为什么关系数据库中的排序不稳定?简单:表格代表无序集合,因此没有已知的排序。
解决方案是包含一个额外的唯一键作为最后一个排序键。在您的情况下,可能是:
order by o.inDate desc, uuid