sqlserver中delete、update中使用表別名和oracle的區(qū)別
昨天發(fā)現(xiàn)程序中數(shù)據(jù)分析的結(jié)果不對(duì),重新進(jìn)行分析后,原數(shù)據(jù)仍在,有值的字段被累計(jì)。心說,不對(duì)啊,是重新生成記錄后才分析的啊。難道忘了DELETE了?查代碼,發(fā)現(xiàn)有刪除語句。于是在查詢分析器中執(zhí)行,報(bào)錯(cuò)。反復(fù)試幾次,明白了,Delete From不認(rèn)表名別名!回頭想下,當(dāng)初程序改完后主要是在Oracle中測(cè)的,SQLServer一直沒細(xì)測(cè)。
之所以要用別名,是因?yàn)閣here條件中需要用到子查詢寫一些條件,下面不寫那么復(fù)雜,僅說明一下問題。
結(jié)論:
(ORACLE適用) DELETE FROM TABLEA A WHERE A.FIELD1=10
(SQLSERVER適用) DELETE TABLEA FROM TABLEA A WHERE A.FIELD1=10
(Ora\SQL均適用) DELETE FROM TABLEA WHERE TABLEA.FIELD1=10
兩點(diǎn)經(jīng)驗(yàn):
1、測(cè)試要全面;
2、要自信,寫程序時(shí)考慮的情況挺全的。
update情況
update T_report a
set a.status='1'
where a.report_Seq=1234
執(zhí)行失敗
update a
set a.status='1'
from T_report a
where a.report_Seq=1234
執(zhí)行成功 所以要做通用的程序,做好不使用別名
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信