首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为mysql中插入的每一行更新子查询?

如何为mysql中插入的每一行更新子查询?
EN

Stack Overflow用户
提问于 2012-05-01 03:10:39
回答 1查看 319关注 0票数 3

我的查询如下所示:

代码语言:javascript
复制
INSERT INTO table1 (lfd, somedata)
select (select max(lfd) + 1 from table1), somedata from table2

Table2有多行。所以我希望在table1中插入多个行。这是可行的,但是对于所有插入的行,lfd都被设置为相同的数字。

因此,如果max(ldf) +1对于插入的第一行是"2“,那么对于后面的所有行也是"2”。这是不正确的,因为下一行的max(lfd) +1当然应该返回"3“。

如何告诉mysql为每个insert重新计算子查询?

我不能接触表结构,因为我将数据从一个php库迁移到另一个不同的php库中。表的结构由应用程序控制。

在Oracle中,我只需定义一个序列并在子选择中选择squeencename.nextval即可。-我非常确定这会起作用,但据我所知,mysql不提供序列,对吧?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-01 03:55:46

试一次:

代码语言:javascript
复制
SELECT MAX(lfd) + 1 INTO @i FROM table1;

INSERT INTO table1 (lfd,col1,...)
SELECT @i:=@i+1,somedata,... FROM SomeTable;

本质上,这将使用一个变量作为序列,使用表中当前的最大id对其进行初始化。

请注意,如果在此查询运行时将行插入到table1中,则可能会出现并发问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10389214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档