MySQL как вы вставляете в таблицу с подзапросом SELECT, возвращающим несколько строк?
MySQL как вы вставляете в таблицу с подзапросом SELECT, возвращающим несколько строк?
INSERT INTO Results
(
People,
names,
)
VALUES
(
(
SELECT d.id
FROM Names f
JOIN People d ON d.id = f.id
),
(
"Henry"
),
);
Я хочу для заполнения новой таблицы всеми результатами, возвращаемыми из этого подзапроса. Как это сделать, не получив ошибка 1242 (21000): подзапрос возвращает более 1 строки
7 ответов
INSERT INTO Results (People, names )
SELECT d.id, 'Henry'
FROM Names f
JOIN People d ON d.id = f.id
объединить статическую строку Henry
С SELECT
запрос.
INSERT INTO Results
(
People,
names,
)
VALUES
(
(
SELECT d.id
FROM Names f
JOIN People d ON (d.id = f.id) limit 1
),
(
"Henry"
),
);
вот что я нашел, что работает хорошо. Это немного долго,но много раз дополнительные данные должны быть перемешаны.
вставьте несколько строк в table1 из table2 со значениями. Примеры:
INSERT INTO table1 (col1, col2, col3, col4, col5)
SELECT col1,col2,col3,col4,col5
FROM table2 t2
WHERE t2.val2 IN (MULTIPLE VALUES)
AND (Another Conditional);
Вы можете вставить жестко закодированные значения, чтобы вставить несколько строк с повторением данные:
INSERT INTO table1 (col1, col2, col3, col4, col5)
SELECT "Value", col2, col3, "1900-01-01","9999-12-31"
FROM table2 t2
WHERE t2.val2 IN (MULTIPLE VALUES)
AND (Another Conditional);
обратите внимание, что: "Value","1900-01-01","9999-12-31" будут повторяться во всех вставленных строках.
INSERT INTO Results
(
People,
names,
)
SELECT d.id, 'Henry'
FROM Names f
JOIN People d ON d.id = f.id
причиной этой ошибки (подзапрос возвращает более 1 строки) заключается в том, что вы используете скобки (). Посмотрите внимательнее на лучший ответ. Он не содержит паретезиса вокруг подзапроса
в MySql несколько значений из строк могут быть вставлены следующим образом, избегая дубликатов. Спасибо.
insert into brand(name) select * from (
select 'Fender' as name
union select 'a'
union ..... ) t
where not exists (select 1 from brand t2 where t2.name COLLATE latin1_general_ci = t.name COLLATE utf8mb4_unicode_ci )
вставить в ec_element (parentid,name) выберите elementid , 'STARTUP' из ec_element, где name = 'BG';
инструкция insert принимает значения elementid из таблицы, найденной с выполненным условием и строкой метки.