Могу ли я использовать подзапрос SELECT внутри запроса INSERT? - PullRequest
1 голос
/ 10 июня 2011

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

Вот что у меня сейчас есть:

INSERT INTO dot (entrant_id, year, entry_code, title, retail_category, campaign_type, client_company, client_city, client_state, field_date_active, height, width, depth, weight, oversize_fee, volt_110, attach_to_gridwall, hang_from_ceiling, table_or_countertop, misc_setup, created_date, modified_date, co_entrant)
        VALUES (288, 2011, 1234, 'RG Total Defense BW mixed Floorstand', '32', 'C', 'Henkel', 'Scottsdale', 'AZ', '2011-01-15', 60, 26, 15, 29, 0, '0', '0', '0', '0', '', NOW(), NOW(), '')

Однако мне нужно, чтобы значение entry_code было выбрано из той же таблицы - я могу сделать это как отдельный запрос:

MAX(entry_code) FROM dot WHERE year = 2011

но, похоже, не может интегрировать это с оператором вставки. Это возможно? Или подобный подзапрос будет работать, только если он выбирается из другой таблицы?

Ответы [ 3 ]

2 голосов
/ 10 июня 2011
INSERT INTO dot (entrant_id, year, entry_code, ...)
SELECT 288, 2011, MAX(entry_code), ... FROM dot WHERE year=2011
0 голосов
/ 10 июня 2011
INSERT INTO dot (entrant_id, year, entry_code, title, retail_category, campaign_type, client_company, client_city, client_state, field_date_active, height, width, depth, weight, oversize_fee, volt_110, attach_to_gridwall, hang_from_ceiling, table_or_countertop, misc_setup, created_date, modified_date, co_entrant)
VALUES (288, 2011, (SELECT MAX(entry_code) FROM dot WHERE year = 2011), 'RG Total Defense BW mixed Floorstand', '32', 'C', 'Henkel' ...
0 голосов
/ 10 июня 2011

Синтаксис в предоставленной вами ссылке должен работать.Но это не тот синтаксис, который у вас "есть", попробуйте следующий синтаксис (который очень похож на эту ссылку ..):

insert into dot(field1, field2, field3, field4) select max(entry_code), 'value2', val3, 'value4' from dot where year = 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...