在 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;
它有两个 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;