gpt4 book ai didi

MySQL ID 按 256 的倍数排序?

转载 作者:可可西里 更新时间:2023-11-01 08:34:10 25 4
gpt4 key购买 nike

所以我在数据库中有一堆记录,它们有一个 Date_Created 列,但大多数行的数据都为零。

+-----+---------------------+--
| id | Date_Created | Other_Fields...
+-----+---------------------+--
| 2 | 0000-00-00 00:00:00 | ...
+-----+---------------------+--
| 34 | 0000-00-00 00:00:00 | ...
+-----+---------------------+--
| 56 | 0000-00-00 00:00:00 | ...
+-----+---------------------+--
| ... | ... | ...
+-----+---------------------+--

有些行包含此列的非零数据,但这些行目前不是我关心的行。

我想知道的是,为什么当我按Date_Created asc 对数据进行排序时,行以一种我没有预料到的方式返回。这就是 ID 的排序方式。

256
512
1024
1280
1536
257
513
1025
1281
1537
2049
2
258
514
1026
1282
1538
3
259
515
1027
1283
1539
4
260
...

(256 的倍数)+n,其中 Date_Created 在整个过程中基本上为 0。

只有当我select * from table order by Date_Created 时才会发生这种情况。如果选择单独的列(select id, Date_Created...),id 会按顺序出现。

为什么会这样?

最佳答案

如果您按日期排序,mysql 将完全按照日期排序。如果所有日期都“相等”,则 mysql 不关心具有相同日期的元素内部的顺序。 (因为没有被告知,所以才这样做!)

结果称为“未定义”。这很可能取决于 mysql 将用于获取结果的(多个)线程。结果也可能因调用而异。

因此,如果您想确保对相同数据的相同调用有相同的顺序 - 始终按 id 最后排序。

select * from table order by Date_Created, id

关于MySQL ID 按 256 的倍数排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18238352/

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