我們最近有一些問題,從表中刪除重複條目的sql腳本不會使用最新的條目作爲保留的條目。我認爲,這條線是問題奇怪的刪除查詢,它寫的是否正確?
delete from vaccine_patient_details
where vacc_pat_guid <>
(Select top 1 vacc_pat_guid
from vaccine_patient_details as v
where v.patient_guid = patient_guid and
v.vaccine_guid = vaccine_guid
order by date_given desc)
那是正確的語法?我發現另一個版本的腳本在不同的表格上工作。 (名稱變更爲第一個例子匹配)
delete from vaccine_patient_details
where vacc_pat_guid <>
(Select top 1 vacc_pat_guid
from vaccine_patient_details as v
where v.patient_guid = vaccine_patient_details.patient_guid and
v.vaccine_guid = vaccine_patient_details.vaccine_guid
order by date_given desc)
這其中使用了已刪除的表的表名內where子句中,可以說是導致在我的第一個版本的問題嗎?有關表
詳細說明:
- 在GUID結束的任何列是唯一標識符
- vacc_pat_guid的 數據類型是主鍵而且是唯一的。
- date_given是可以爲空的日期時間。如果有一個重複的地方,其中一個是空的,而另一個不是空的,它應該更喜歡不是空的那個。
您不能在刪除語句中使用別名。它給出錯誤'Msg 102,Level 15,State 1,Line 1 'v1'附近的語法不正確。' –
不過,我認爲你是正確的第一部分,它是比較錯誤的表。我只是有人可以給予確認而不是「我想」。 –
'Msg 156,Level 15,State 1,Line 1 關鍵字'as'附近的語法不正確。' –