gpt4 book ai didi

MySQL 想要使用 SELECT INTO 自动递增的非主键

转载 作者:行者123 更新时间:2023-11-30 01:03:17 26 4
gpt4 key购买 nike

我有我的姓名表。我想选择按名称排序的这些并将它们按此顺序插入到另一个表 my_table2 中。 My_table2 有一个字段“display_order”,该字段应该相对于名称顺序是连续的。

insert into my_table2(display_order, name)
select something_special(), name from my_table
order by name;

使得 display_order 为 1,2,3.. 按照名称顺序。

这是否可以通过单个选择(即不是循环)来实现:

  loop through my_table1 sorted by name:
insert name, display_order into my_table2
increment display_order

这是innodb

为什么我想要这个:

my_table select 实际上要复杂得多,涉及各种用户搜索参数。我希望能够执行一次此搜索,然后将结果保存到 my_table 2 中。这样,从 my_table2 中获取数据就会更快、更容易。而且,是的,我知道 my_table2 不会随着 my_table 中的数据更改而更新。本来就应该这样。

最佳答案

如果我正确理解你的问题,你需要类似的东西

insert into my_table2(display_order, name)
select @a:=@a+1, name
from my_table
join (select @a :=0) b ON (1=1)
order by name;

为了绝对确定变量根据order by递增(我不记得mysql是否保证何时计算出准确的变量),您可能需要像这样重写它:

insert into my_table2(display_order, name)
select @a:=@a+1, a.name
from
(
select name
from my_table
order by name
)a
join (select @a :=0) b ON (1=1)

关于MySQL 想要使用 SELECT INTO 自动递增的非主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19908187/

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