使用INSERT INTO...SELECT 將所有列插入目標表
使用下列指令將資料從this_table 複製到this_table_archive 時遇到困難使用通配符(*) 選擇的INSERT INTO 語句。讓我們排查問題並找到可行的解決方案。
錯誤在於使用 (*) 來選取所有欄位而不指定列名。正如 MySQL 手冊中詳述的,正確的語法要求您明確列出列名稱。
以下是正確的程式碼:
INSERT INTO this_table_archive (col1, col2, ..., coln) SELECT col1, col2, ..., coln FROM this_table WHERE entry_date < '2011-01-01 00:00:00';
取代 col1, col2, ..., coln與表中實際的列名。
關於 id 列,如果兩個表都有自增 id 且資料已存在於其中表,您可以考慮在查詢的列列表中省略 id 以避免潛在的重複鍵衝突。
對於空目標表,此省略不會導致任何問題。但是,對於包含資料的表,排除 id 列將確保為複製的行產生新的、唯一的 ID。
以上是如何在 MySQL 中使用 INSERT INTO...SELECT 正確地將所有列從一個表插入到另一個表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!