利用 INSERT ... SELECT 搭配字串函數與關聯查詢,可一次性根據現有資料產生大量規律性新資料,避免程式迴圈寫入。
INSERT INTO CPPRADAR(
SITEID, RADARNAME, RADARDESC, PARENTID,
RADARTYPE, RADARQUERY, RADARCONFIG, CRUSER, CRTIME, OPERUSER, OPERTIME, LEAF
)
SELECT
001,
REPLACE(a.RADARNAME, '互動', '部落格') AS radarname,
'部落格',
a.RADARID,
3,
SUBSTR(b.RADARQUERY, 6, 6),
'條件',
'admin',
CURDATE(),
'admin',
CURDATE(),
1
FROM
(SELECT * FROM CPPRADAR WHERE RADARDESC = '互動') a
INNER JOIN
(SELECT * FROM CPPRADAR WHERE RADARDESC = '新聞' AND STATUS = 0) b
ON a.PARENTID = b.PARENTID;
a、b 分別代表不同條件的資料集。REPLACE 批量修改名稱關鍵字。SUBSTR(b.RADARQUERY, 6, 6) 從第 6 字元取 6 碼。3、'條件'、'admin' 等直接帶入。CURDATE() 自動帶入執行當日。ON a.PARENTID = b.PARENTID 確保父層一致。PARENTID、RADARDESC、STATUS)有索引。SET autocommit=0; 手動控制交易提交,最後 COMMIT;。LOAD DATA INFILE)。善用 SQL 集合運算,能大幅簡化應用程式邏輯並提升寫入效能。