需依據其他表格條件刪除子表資料時,可善用符合 SQL-92 的子查詢。以寵物店資料庫為例:
DELETE FROM inventory
WHERE breed_id IN (SELECT breed_id FROM breed WHERE breed_name = 'Shitzu');
先指定目標表,再以子查詢結果比對識別欄位。執行前建議先用 SELECT * 驗證將被刪除的資料列。
雖 SQL Server 文件宣稱支援,但實測多平台均不支援 DELETE ... JOIN,且不符 SQL-92 標準,不建議使用。
SQL-92 無標準語法支援單一陳述式刪除多表。替代方案:
IsActive 標記欄位,邏輯刪除替代物理刪除。DELETE 會永久移除整列資料,務必在測試環境驗證後再套用至生產環境。