Rumah > Soal Jawab > teks badan
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粉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