首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL SELECT INTO 報錯 1327 解決方案:CREATE TABLE SELECT 替代姿勢

     編輯:MySQL 綜合教學

嘗試用標準 SQL SELECT col1, col2 INTO new_table FROM src_table 在 MySQL 中備份表時,報錯:ERROR 1327 (42000): Undeclared variable: new_table。原因是 MySQL 不支持此語法(將 INTO 解析為變量賦值)。正確替代方案是 CREATE TABLE ... SELECT。

一、 錯誤複現


SELECT `id`, `name` INTO `backup_table` FROM `source_table`;
-- ERROR 1327 (42000): Undeclared variable: backup_table

二、 正確替代語句


-- 一條語句:建表 + 複製數據 + 自動推導列類型
CREATE TABLE `backup_table` 
SELECT `id`, `name` FROM `source_table` WHERE `status` = 1;

三、 實戰示例:多表關聯去重建表


CREATE TABLE `www_phpernote_com` 
SELECT 
  A.`id`, 
  B.`id` AS `typeId`, 
  A.`brand`, 
  A.`quanpin`, 
  A.`simple` 
FROM `brands` AS A
JOIN `cartype` AS B ON A.`type` = B.`name`
GROUP BY A.`brand`;
  • ✅ 關聯查詢結果直接物化為新表
  • ✅ GROUP BY 去重
  • ✅ 列別名重命名

四、 ⚠️ 重要限制(必讀)

特性CREATE TABLE SELECT標準建表 + INSERT SELECT
主鍵❌ 不複製✅ 保留
索引❌ 不複製✅ 保留
外鍵❌ 不複製✅ 保留
AUTO_INCREMENT❌ 丟失✅ 保留
列註釋/字符集❌ 丟失✅ 保留
適用場景臨時表、測試集、歸檔快照生產遷移、備份、重建

五、 生產級表複製標準動作

  1. CREATE TABLE `new_table` LIKE `source_table`;(克隆結構、索引、約束)
  2. INSERT INTO `new_table` SELECT * FROM `source_table`;(複製數據)
  3. 大表分批:INSERT ... WHERE id BETWEEN ? AND ?
  4. 驗證:CHECKSUM TABLE source_table, new_table;

記住:CREATE TABLE SELECT 只做「快照」,不做「遷移」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved