[英]MySQL want non-primary key that auto-increments with SELECT INTO
我有my_table的名字。 我想选择按名称排序的这些并将它们按此顺序插入到另一个表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选择实际上要复杂得多,涉及各种用户搜索参数。 我希望能够一次执行此搜索,然后将结果保存到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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.