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

MySQL DELETE 使用別名報錯的正確寫法

     編輯:MySQL 綜合教學

MySQL DELETE 使用別名報錯的正確寫法

MySQL DELETE 語句**不支援**在表名後直接使用別名,這是常見語法錯誤。本文給出錯誤示例、正確寫法與多表刪除的標準語法。

錯誤示例

-- ❌ 報錯:You have an error in your SQL syntax near 'caa WHERE caa.account_action_code...'
DELETE FROM account.comp_account_action caa 
WHERE caa.account_action_code IN (10950112, 10950113, 10950114, 10950115);

正確寫法(單表)

-- ✅ 直接用表名,WHERE 內欄位無需前綴
DELETE FROM account.comp_account_action 
WHERE account_action_code IN (10950112, 10950113, 10950114, 10950115);

多表刪除標準語法(需別名時)

MySQL 支援多表刪除時使用別名,但語法不同:

-- 刪除 t1 中符合條件的行(關聯 t2)
DELETE t1 
FROM table1 t1
INNER JOIN table2 t2 ON t1.id = t2.t1_id
WHERE t2.status = 'deleted';

-- 或使用 USING 子句
DELETE FROM t1
USING table1 t1
INNER JOIN table2 t2 ON t1.id = t2.t1_id
WHERE t2.status = 'deleted';

核心規則總結

場景是否支援別名正確語法
單表 DELETE❌ 不支援DELETE FROM table WHERE ...
多表 DELETE (JOIN)✅ 支援DELETE t1 FROM t1 JOIN t2 ...
UPDATE (單表/多表)✅ 支援UPDATE t SET ... / UPDATE t1 JOIN t2 SET ...
SELECT✅ 支援SELECT * FROM t1 a JOIN t2 b ...

避坑建議

  1. 單表 DELETE/UPDATE 直接寫表名,欄位無需前綴
  2. 多表操作才引入別名,且必須緊跟 DELETE/UPDATE 關鍵字後
  3. 使用 IDE/編輯器 SQL 語法檢查(DataGrip、VS Code MySQL 插件)預防低級錯誤
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved