sta*_*low 56 mysql select subquery insert-into
MySQL如何使用返回多行的SELECT子查询INSERT INTO表?
INSERT INTO Results
(
People,
names,
)
VALUES
(
(
SELECT d.id
FROM Names f
JOIN People d ON d.id = f.id
),
(
"Henry"
),
);
Run Code Online (Sandbox Code Playgroud)
我WANT来填充新表与此子查询返回的所有结果.如何在不获取ERROR 1242(21000)的情况下执行此操作:子查询返回超过1行
Rya*_*yan 110
INSERT INTO Results (People, names )
SELECT d.id, 'Henry'
FROM Names f
JOIN People d ON d.id = f.id
Run Code Online (Sandbox Code Playgroud)
将静态字符串Henry与您的SELECT查询组合在一起.
小智 10
INSERT INTO Results
(
People,
names,
)
VALUES
(
(
SELECT d.id
FROM Names f
JOIN People d ON (d.id = f.id) limit 1
),
(
"Henry"
),
);
Run Code Online (Sandbox Code Playgroud)
以下是我发现效果很好的内容.它有点长,但很多时候需要改组额外的数据.
使用值在table2中向table1插入多行.例子:
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);
Run Code Online (Sandbox Code Playgroud)
您可以插入硬编码值以使用重复数据插入多行:
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);
Run Code Online (Sandbox Code Playgroud)
请注意:"值","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
Run Code Online (Sandbox Code Playgroud)