gpt4 book ai didi

MySQL 5.1 以错误的顺序插入/选择数据

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

我正在尝试按排序顺序将数据插入表中,以便以后快速检索。我使用序数列来指定数据的顺序。就像这样:

SET @ctr = -1;

insert into search_data (trans_id, ordinal)
select trans_id, @ctr:=@ctr+1
from transactions
order by created;

created 是一个日期时间字段。

在没有插入的情况下进行选择会使行以正确的顺序返回,但 ctr 变量不会正确递增。例如:

+---+----------+--------------+---------------------+
| 1 | trans_id | @ctr:=@ctr+1 | created |
+---+----------+--------------+---------------------+
| 1 | 131379 | 232 | 2011-10-17 12:27:09 |
| 1 | 131377 | 231 | 2011-10-17 12:24:30 |
| 1 | 131311 | 230 | 2011-10-16 23:44:12 |
| 1 | 131305 | 229 | 2011-10-16 21:57:35 |
| 1 | 129948 | 46 | 2011-10-10 13:24:58 |
| 1 | 129947 | 45 | 2011-10-10 13:24:58 |
| 1 | 129946 | 44 | 2011-10-10 13:24:58 |
| 1 | 129945 | 43 | 2011-10-10 13:24:58 |
| 1 | 129944 | 42 | 2011-10-10 13:24:58 |

这项技术在 MySQL 5.0、4.x 和 3.x 中对我有用。但在 5.1 中不起作用。

看起来排序是在变量递增之后完成的,而以前变量是在排序之后递增的

有什么想法吗?

最佳答案

尝试子查询:

select trans_id, @ctr:=@ctr+1
from ( select trans_id
from transactions
order by created, trans_id ) as t

asdfasdf

关于MySQL 5.1 以错误的顺序插入/选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9900657/

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