Delete
DELETE 之後的別名是什麼意思?
DELETE 之後的別名是什麼意思?
例如我有一個查詢:
DELETE p1 FROM Person p1, Person p2 WHERE p1.Email = p2.Email AND p2.Id < p1.Id
這是什麼意思
DELETE p1
?我理解如下。
Person
首先,我們找到表與自身的笛卡爾積。然後我們刪除p1
和p2
)中的所有行不同。Id
然後我們刪除fromp2
大於或等於Id
from的所有行p1
。現在我們留下了一些行。我們從左側行的部分中選擇所有Id
s並從初始表中刪除所有條目,該表包含在所選擇的 s 中。p1``Person``Id``Id
我的理解正確嗎?
如果正確,則
DELETE p1
意味著刪除行的結果部分中Person
whereId
is 中的所有條目。p1
想像一下,刪除是一個由 2 個步驟組成的過程。在第一步,伺服器執行相應的
SELECT *
選擇,並標記必須刪除的行。在第二步,它刪除標記的行。查詢中的DELETE p1意味著只有從別名為 as 的表中選擇的行
p1
必須標記為刪除。如果您使用 DELETE p1、p2或簡單地 DELETE FROM,則所有表副本中的選定行都會被標記。