在 mysql 中插入 select max+1

insert into select max+1 in mysql

它有两个 table。
使用来自 table B 的数据,我们尝试插入到 table A.
然而,我想要的结果是

一个

mid itemcode seq
1 101 1
1 101 2
1 102 3
2 101 1
2 102 2

B

mid itemcode seq
1 101 1
1 102 1
2 101 1
2 102 1
3 101 1

我想要的结果。

mid itemcode seq
1 101 1
1 101 2
1 102 3
1 101 4
1 102 5
2 101 1
2 102 2
2 102 3
2 102 4
3 101 1

查询

insert into A (memberid,itemcode,seq)
select B.memberid, B.itemcode, max(A.seq)+1 from A A ,B B where A.memberid=B.memberid group by B.memberid, B.itemcode;

结果错误。

mid itemcode seq
1 101 1
1 101 2
1 102 3
1 101 4
1 102 4
2 101 1
2 102 2
2 102 3
2 102 3
3 101 1

有什么好的方法吗?

查看 row_number() 函数,它可能对您有所帮助

insert into tab_a (mid,itemcode,seq)
select B.mid, 
       B.itemcode, 
       ifnull(max(A.seq), 0) + row_number() over(partition by mid)
  from tab_a A
  right join tab_b B 
    on A.mid = B.mid 
 group by B.mid, B.itemcode;

db_fiddle