sqlserver中delete、update中使用表别名和oracle的区别
昨天我遇到了一个棘手的问题,数据分析结果出现偏差。重新分析后,发现原数据还在,但有值的字段被累计起来。我心中疑惑,明明是在重新生成记录后才进行分析的,为何会出现这种情况?难道忘记执行删除操作了吗?
经过仔细查看代码,我发现删除语句的存在。但在查询分析器中执行时,却报错了。经过多次尝试,我意识到问题出在表名别名上。Delete From语句并不识别表名别名。回想起程序修改后主要在Oracle中测试,没有对SQLServer进行全面测试,我意识到这次问题的根源。
之所以使用别名,是因为在where条件中需要用到子查询来设定一些条件。在这里我并不打算深入讨论狼蚁网站的SEO优化(这个问题相对复杂,此处仅作简要说明)。
结论:
在Oracle中,正确的DELETE语句应该是这样的:DELETE FROM TABLEA A WHERE A.FIELD1=10。
在SQLServer中,正确的DELETE语句应该是这样的:DELETE TABLEA FROM TABLEA A WHERE A.FIELD1=10。
而对于Oracle和SQLServer都适用的语句是:DELETE FROM TABLEA WHERE TABLEA.FIELD1=10。
两点经验分享:
1. 测试要全面。在进行程序开发或修改时,应对不同的数据库系统(如Oracle和SQLServer)进行全面测试,以确保程序的正确性和稳定性。
2. 要自信,但需考虑周全。在编写程序时,要对自己充满信心,同时要考虑各种可能出现的情况。
关于update情况,我有以下经验分享。在编写update语句时,如果采用别名的方式,可能会出现执行失败的情况。例如:
update T_report a set a.status='1' where a.report_Seq=1234。这条语句执行会失败。
而下面这条语句:
update a set a.status='1' from T_report awhere a.report_Seq=1234。却能成功执行。
为了确保程序的通用性,建议在编写update语句时避免使用别名。这样才能避免因数据库系统不同而导致的执行差异问题。
编程语言
- sqlserver中delete、update中使用表别名和oracle的区别
- PHP微信发送推送消息乱码的解决方法
- JavaScript中Boolean对象的属性解析
- javascript实现简单的可随机变色网页计算器示例
- asp遍历站点所有文件夹的代码
- jQuery插件Easyui设置datagrid的pageNumber导致两次请求
- php简单判断两个字符串是否相等的方法
- asp 批量删除选中的多条记录
- PHP fastcgi模式上传大文件(大约有300多K)报错
- jquery ajax多次请求数据时 不刷新问题的解决方法
- JavaScript使用FileSystemObject对象写入文本文件内容的
- BootStrap 动态添加验证项和取消验证项的实现方法
- PHP按行读取文件时删除换行符的3种方法
- JS实现往下不断流动网页背景的方法
- .NET中RDLC循环处理数据的应用分析
- 如何远程连接SQL Server数据库图文教程