MySQL INSERT ...SELECT 与 SUBQUERY

发布于 2024-10-18 21:52:16 字数 727 浏览 4 评论 0原文

我必须执行插入查询,从另一个表插入数据,

条件:如果我有 'codigoTipo' = 'A' ,列 'numero' 应该是最后一个 'numero' + 1

例如:

id | codigoTipo   |   numero 
1  |      A       |     1   
2  |      O       |     1   
3  |      A       |     2   
4  |      A       |     3   
   INSERT asociados (id, codigoTipo, numero, cp, direccion, email, fax, movil, nombre, nombreEncargado,  telefono, website, idLocalidad) 
    SELECT p.id, 'A', (MAX(asociados.numero)+1 ) , p.postalcode, p.address, p.mail, p.fax, p.movil, p.name, p.charge_person, p.phone, p.website, p.locality 
    FROM 
partners as p, asociados

我该怎么做?我的代码有错误。

编辑:codigoTipo 和 numero 是一个复合PK,这就是为什么我需要“numero”列中的自动增量数字

I have to do a insert query, inserting data from another table,

condition: if I have a 'codigoTipo' = 'A' , the column 'numero' should be the last 'numero' + 1

e.g.:

id | codigoTipo   |   numero 
1  |      A       |     1   
2  |      O       |     1   
3  |      A       |     2   
4  |      A       |     3   
   INSERT asociados (id, codigoTipo, numero, cp, direccion, email, fax, movil, nombre, nombreEncargado,  telefono, website, idLocalidad) 
    SELECT p.id, 'A', (MAX(asociados.numero)+1 ) , p.postalcode, p.address, p.mail, p.fax, p.movil, p.name, p.charge_person, p.phone, p.website, p.locality 
    FROM 
partners as p, asociados

How can I do that? My code has an error.

Edit: codigoTipo and numero, are a compositePK thats why I need the autoincremental number in column 'numero'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

盛装女皇 2024-10-25 21:52:16

您可以使用子查询来获取最大数字。

INSERT asociados (id, codigoTipo, numero, cp, direccion,
    email, fax, movil, nombre, nombreEncargado,  telefono, website, idLocalidad) 
SELECT p.id, 'A', dm.MaxNum + 1 , p.postalcode, p.address,
   p.mail, p.fax, p.movil, p.name, p.charge_person,
   p.phone, p.website, p.locality 
FROM partners as p, (SELECT MAX(numero) MaxNum FROM asociados) dm

更新:如果您希望插入的行增加,请使用以下查询:

INSERT asociados (id, codigoTipo, numero, cp, direccion,
    email, fax, movil, nombre, nombreEncargado,  telefono, website, idLocalidad) 
SELECT p.id, 'A', @r := @r + 1 , p.postalcode, p.address,
   p.mail, p.fax, p.movil, p.name, p.charge_person,
   p.phone, p.website, p.locality 
FROM partners as p, (SELECT @r := MAX(numero) MaxNum FROM asociados) dm

You can use a subquery to get the maximum numero.

INSERT asociados (id, codigoTipo, numero, cp, direccion,
    email, fax, movil, nombre, nombreEncargado,  telefono, website, idLocalidad) 
SELECT p.id, 'A', dm.MaxNum + 1 , p.postalcode, p.address,
   p.mail, p.fax, p.movil, p.name, p.charge_person,
   p.phone, p.website, p.locality 
FROM partners as p, (SELECT MAX(numero) MaxNum FROM asociados) dm

Update: If you want the rows being inserted to increase, use this query:

INSERT asociados (id, codigoTipo, numero, cp, direccion,
    email, fax, movil, nombre, nombreEncargado,  telefono, website, idLocalidad) 
SELECT p.id, 'A', @r := @r + 1 , p.postalcode, p.address,
   p.mail, p.fax, p.movil, p.name, p.charge_person,
   p.phone, p.website, p.locality 
FROM partners as p, (SELECT @r := MAX(numero) MaxNum FROM asociados) dm
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文