您可以 INSERT SELECT 多行而不需要每次都对同一行运行 select 吗?
P粉304704653
P粉304704653 2023-09-07 11:31:14
0
1
526

如果我有一个表,并且需要另一个值中的一个值,而其他值来自其他地方,我是否必须每次都运行选择?

INSERT INTO table1 (name, otherValue) VALUES 
(SELECT name FROM table2 WHERE id = 1, outsideValue1),
(SELECT name FROM table2 WHERE id = 1, outsideValue2),
(SELECT name FROM table2 WHERE id = 1, outsideValue3);

所以名称是相同的,而 otherValue 每次都不同,我试图批量插入。

P粉304704653
P粉304704653

全部回复(1)
P粉269847997

一种方法是将“其他值”放入派生表中,以便与单个源记录交叉连接:

INSERT INTO table1 (name, otherValue)
SELECT t2.name, v.val
FROM table2 t2
CROSS JOIN (
    SELECT 'val1' as val
    UNION ALL SELECT 'val2'
    UNION ALL SELECT 'val3'
) v
WHERE t2.id = 1

在MySQL 8.0.19及以上版本中,我们可以使用VALUES/ROW语法:

INSERT INTO table1 (name, otherValue)
SELECT t2.name, v.val
FROM table2 t2
CROSS JOIN (VALUES 
    ROW('val1'),
    ROW('val2'),
    ROW('val3')
) v(val)
WHERE t2.id = 1
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板