MySQL INSERT ... ВЫБРАТЬ с помощью SUBQUERY - PullRequest
0 голосов
/ 21 февраля 2011

Мне нужно выполнить запрос вставки, вставив данные из другой таблицы, условие

: если у меня есть 'codigoTipo' = 'A', столбец 'цифра' должен быть последним 'цифрой' +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 и Numberro - это составной ПК, поэтому мне нужно автоинкрементное число в столбце "нумеро"

1 Ответ

3 голосов
/ 21 февраля 2011

Вы можете использовать подзапрос, чтобы получить максимальное число.

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
...