mysql将每行数据的最后N个字符移动到下一行
我想把每行数据的最后3个字符移到下一行,第一行用xxx填充 例如: 现在我有了第一张桌子,我想要第二张桌子,谢谢 [更新]mysql将每行数据的最后N个字符移动到下一行,mysql,database,mariadb,Mysql,Database,Mariadb,我想把每行数据的最后3个字符移到下一行,第一行用xxx填充 例如: 现在我有了第一张桌子,我想要第二张桌子,谢谢 [更新] mysql版本是5.7.22,不支持滞后函数如果您的mysql/MariaDB版本支持窗口函数,并且您已经创建了Table Two,那么您可以像这样插入新行: insert into TableTwo(id, num) select id, concat( coalesce(lag(right(num, 3)) over (order by id), 'x
mysql版本是5.7.22,不支持滞后函数如果您的mysql/MariaDB版本支持窗口函数,并且您已经创建了Table Two,那么您可以像这样插入新行:
insert into TableTwo(id, num)
select
id,
concat(
coalesce(lag(right(num, 3)) over (order by id), 'xxx'),
coalesce(left(num, 2), '')
) num
from (
select * from TableOne
union all
select max(id) + 1, null from TableOne
) t;
请参阅。如果没有窗口功能,您可以通过自连接来实现:
insert into TableTwo(id, num)
select
t.id,
concat(
coalesce(right(t1.num, 3), 'xxx'),
coalesce(left(t.num, 2), '')
) num
from (
select * from TableOne
union all
select max(id) + 1, null from TableOne
) t left join TableOne t1
on t1.id = t.id - 1;
请参阅。结果:
> id | num
> -: | :----
> 1 | xxxab
> 2 | cde01
> 3 | 23456
> 4 | 789
你为什么要这么做?你的MySql/MariaDB版本是什么?谢谢!但是我的mysql版本是5.7.22,不支持延迟function@artwl见我的第二个问题。如果ID之间没有间隙,它将起作用。