Können Sie INSERT SELECT in mehreren Zeilen ausführen, ohne jedes Mal select für dieselbe Zeile auszuführen?
P粉304704653
P粉304704653 2023-09-07 11:31:14
0
1
428

Wenn ich eine Tabelle habe und einen Wert von einer anderen benötige und die anderen Werte von woanders kommen, muss ich dann jedes Mal die Auswahl ausführen?

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);

Der Name ist also derselbe und otherValue ist jedes Mal anders, wenn ich versuche, ihn stapelweise einzufügen.

P粉304704653
P粉304704653

Antworte allen(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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!