Bolehkah anda INSERT SELECT berbilang baris tanpa menjalankan pilih pada baris yang sama setiap kali?
P粉304704653
P粉304704653 2023-09-07 11:31:14
0
1
471

Jika saya mempunyai jadual dan memerlukan satu nilai dari yang lain dan nilai lain datang dari tempat lain, adakah saya perlu menjalankan pilih setiap kali?

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

Jadi nama pun sama and otherValue berbeza setiap kali cuba batch insert.

P粉304704653
P粉304704653

membalas semua(1)
P粉269847997

Salah satu cara ialah meletakkan "nilai lain" ke dalam jadual terbitan untuk dicantum silang dengan rekod sumber tunggal:

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

Dalam MySQL 8.0.19 dan ke atas, kita boleh menggunakan sintaks 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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan