開發測試常需複製表結構與資料,SELECT INTO 與 INSERT INTO SELECT 適用場景截然不同,核心在於目標表是否預先存在。
INSERT INTO Table2 (a, c, d)
SELECT a, c, 5 FROM Table1; -- 可混合插入常數值
Table2 必須預先建立WHERE 過濾SELECT a, c INTO Table2 FROM Table1;
Table2 必須不存在,語句會自動建立SELECT 列清單與資料型別-- 1. 建立目標表
CREATE TABLE Table2 (a VARCHAR(10), c VARCHAR(10), d INT);
-- 2. 複製資料並注入常數 5
INSERT INTO Table2(a, c, d) SELECT a, c, 5 FROM Table1;
-- 直接建表並複製
SELECT a, c INTO Table2 FROM Table1;
-- Table2 自動建立,結構為 (a VARCHAR(10), c VARCHAR(10))
CREATE TABLE ... LIKE src 再 INSERT INTO SELECTdb.table 完整限定名SELECT INTO 在含觸發器的表上可能觸發鎖爭用,大量資料建議分批CREATE TABLE ... SELECT ... 語法,功能等同 SELECT INTO 但更標準