如果我有一個表,並且需要另一個值中的一個值,而其他值來自其他地方,我是否必須每次都運行選擇?
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粉2698479972023-09-08 00:08:10
一種方法是將「其他值」放入衍生表中,以便與單一來源記錄交叉連接:
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