MySQL INSERT с несколькими вложенными SELECT
Возможно ли такой запрос? MySQL дает мне синтаксическую ошибку. Несколько значений insert с вложенными выделениями...
INSERT INTO pv_indices_fields (index_id, veld_id)
VALUES
('1', SELECT id FROM pv_fields WHERE col1='76' AND col2='val1'),
('1', SELECT id FROM pv_fields WHERE col1='76' AND col2='val2')
Ответы
Ответ 1
Я только что проверил следующее (что работает):
insert into test (id1, id2) values (1, (select max(id) from test2)), (2, (select max(id) from test2));
Я предполагаю, что проблема в том, что у вас нет() s вокруг ваших выборок, поскольку этот запрос не будет работать без него.
Ответ 2
Когда у вас есть подобный подзапрос, он должен возвращать только один столбец и только одну строку. Если ваши подзапросы возвращают только одну строку, то вам нужно скобки вокруг них, как заметил @Thor84no.
Если они возвращают (или могут возвращаться) больше, чем строки, попробуйте это вместо:
INSERT INTO pv_indices_fields (index_id, veld_id)
SELECT '1', id
FROM pv_fields
WHERE col1='76'
AND col2 IN ('val1', 'val2')
или если ваши условия очень разные:
INSERT INTO pv_indices_fields (index_id, veld_id)
( SELECT '1', id FROM pv_fields WHERE col1='76' AND col2='val1' )
UNION ALL
( SELECT '1', id FROM pv_fields WHERE col1='76' AND col2='val2' )