mysql 我可以得到一个有几列但仍然是确定性的ORDER BY吗?

4dbbbstv  于 2023-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(138)

我知道 deterministicORDER BY是当你按UNIQUE INDEX列排序时,1)这是真的吗?.
我想按列namepercentage排序。
有一种可能性是,2个或更多的学生有相同的name和相同的percentage,因此,在这种情况下,ORDER BY将是 * 不确定性 *,因为MySQL将定义哪一个放在第一位,哪一个放在第二位(不是我),2)这是真的吗?
所以,我的第三个问题是(主要的一个),如果我想按几列排序,但仍然有一个 * 确定性 * 顺序,我应该使用一个UNIQUE INDEX列 * 在我所有列的末尾 *,例如。
ORDER BY name, percentage, id
考虑到idprimary key
我仍然不知道我是否正确地理解了“确定性”和“非确定性”。

h7appiyu

h7appiyu1#

1.不一定。如果结果在ORDER BY列中不包含任何重复项,则顺序将是确定性的。
1.是,如果存在重复,则结果是不确定的。
1.是的,向ORDER BY添加一个唯一的列使其具有确定性。
这是否重要取决于您的应用程序。如果您正在执行基于查询的复制并且使用INSERT INTO table SELECT ...,则这一点可能很重要。如果没有确定的顺序,您可能会在主服务器和副本服务器之间获得不一致的AUTO_INCREMENT ID。

xxhby3vn

xxhby3vn2#

回答您的问题:
1.是的
1.是的,但更具体地说:这是mysql用来对数据进行排序的快速排序算法,导致了随机性。
1.如果你需要一个确定性查询,那么是的,这是一个好方法。

相关问题