Delete

DELETE 之後的別名是什麼意思?

  • March 28, 2021

DELETE 之後的別名是什麼意思?

例如我有一個查詢:

DELETE p1
FROM Person p1, Person p2
WHERE p1.Email = p2.Email AND p2.Id < p1.Id

這是什麼意思DELETE p1

我理解如下。Person首先,我們找到表與自身的笛卡爾積。然後我們刪除Email兩個表(p1p2)中的所有行不同。Id然後我們刪除fromp2大於或等於Idfrom的所有行p1。現在我們留下了一些行。我們從左側行的部分中選擇所有Ids並從初始表中刪除所有條目,該表包含在所選擇的 s 中。p1``Person``Id``Id

我的理解正確嗎?

如果正確,則DELETE p1意味著刪除行的結果部分中Personwhere Idis 中的所有條目。p1

想像一下,刪除是一個由 2 個步驟組成的過程。在第一步,伺服器執行相應的SELECT *選擇,並標記必須刪除的行。在第二步,它刪除標記的行。

查詢中的DELETE p1意味著只有從別名為 as 的表中選擇的行p1必須標記為刪除。如果您使用 DELETE p1、p2或簡單地 DELETE FROM,則所有表副本中的選定行都會被標記。

引用自:https://dba.stackexchange.com/questions/288862