Rumah  >  Soal Jawab  >  teks badan

Bolehkah anda INSERT SELECT berbilang baris tanpa menjalankan pilih pada baris yang sama setiap kali?

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粉304704653P粉304704653429 hari yang lalu460

membalas semua(1)saya akan balas

  • P粉269847997

    P粉2698479972023-09-08 00:08:10

    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

    balas
    0
  • Batalbalas