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

SQL Server 與 Oracle DELETE/UPDATE 使用表別名的語法差異對照

     編輯:關於SqlServer

跨庫開發時,DELETE 与 UPDATE 对表别名的处理是常见坑点。Oracle 允许在 DELETE FROM 后直接跟别名,而 SQL Server 必须在 DELETE 后指定目标表名,再在 FROM 子句中使用别名。

DELETE 語法對照表

場景OracleSQL Server通用寫法(推薦)
帶別名刪除DELETE FROM TableA a WHERE a.col = 1DELETE TableA FROM TableA a WHERE a.col = 1DELETE FROM TableA WHERE TableA.col = 1
子查詢關聯刪除DELETE FROM A a WHERE a.id IN (SELECT id FROM B)DELETE A FROM A a WHERE a.id IN (SELECT id FROM B)同上

UPDATE 語法對照表

場景OracleSQL Server通用寫法
帶別名更新UPDATE TableA a SET a.col = 1 WHERE a.id = 1UPDATE a SET a.col = 1 FROM TableA a WHERE a.id = 1UPDATE TableA SET col = 1 WHERE id = 1

核心規則速記

  • SQL Server DELETE:DELETE 目標表 FROM 目標表 別名 ...
  • SQL Server UPDATE:UPDATE 別名 SET ... FROM 目標表 別名 ...
  • Oracle:DELETE/UPDATE 別名 ... 直接跟別名。

最佳實踐建議

  1. 編寫跨庫通用代碼時,盡量不使用別名,直接用表名全寫。
  2. 若必須用別名(如多表關聯),請在 DAL 層按目標數據庫生成差異化 SQL。
  3. 單元測試務必在目標數據庫實例上跑通,不要只在 Oracle 驗證就假設 SQL Server 也能跑。

錯誤案例回顧

-- SQL Server 報錯:Incorrect syntax near 'a'
DELETE FROM TableA a WHERE a.col = 1;

-- 正確
DELETE TableA FROM TableA a WHERE a.col = 1;

-- UPDATE 錯誤
UPDATE TableA a SET a.col = 1 WHERE a.id = 1;

-- 正確
UPDATE a SET a.col = 1 FROM TableA a WHERE a.id = 1;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved