关于update在不同数据库的使用
2013-05-01 16:41
232 查看
sql语法虽然简单,但也有忘记的可能,写下来,以备不时之需。
1、单表更新多个字段
DB2:
updatet1set(id,name)=('1','2')wherenamelike'kiss%'--正确运行
updatet1setid='1',name='2'wherenamelike'kiss%'--正确运行
MSSQL:
updatet1set(id,name)=('1','2')wherenamelike'kiss%'----报:'('附近有语法错误。
updatet1setid='1',name='2'wherenamelike'kiss%'--正确运行
2、多表连合更新
DB2:
updatet1setid=(selectidfromt2wheret2.namelike'kiss%'--正确运行
updatet1set(id,name)=(selectid,namefromt2wheret2.namelike'kiss%'--正确运行
updatet1asetid=b.idfromt2bwhereb.id='dkdkd'--sql遇到非法符号
MSSQL:(updatetablename别名,这种写法是不对的)
updatet1setid=b.id,bid=b.bidfromt2bwhereb.bid='dkdkd'--正确运行
如果要用别名,则也要把t1放在from后面
updateaseta.id=b.id,a.bid=b.bidfromt1a,t2bwherea.id=b.idandb.bid='dkdkd'--正确运行(别名放在from后)
综上,更新多个字段,有两种写法,分别是
1、updatetnameset(a1,a2...)=(selecta1,a2...from...)--DB2写法
2、updatetnameseta1=b.a2,a2=b.a2...fromb...--mssql写法
Oracle下面跟db2差不多,环境没搭建好,就不测试了,要用的时候再参考以上两种写法.
简单在mysql下测试,结果如下,mysql与mssql都支持seta1=b.a2,a2=b.a2...fromb.的写法
1、单表更新多个字段
DB2:
updatet1set(id,name)=('1','2')wherenamelike'kiss%'--正确运行
updatet1setid='1',name='2'wherenamelike'kiss%'--正确运行
MSSQL:
updatet1set(id,name)=('1','2')wherenamelike'kiss%'----报:'('附近有语法错误。
updatet1setid='1',name='2'wherenamelike'kiss%'--正确运行
2、多表连合更新
DB2:
updatet1setid=(selectidfromt2wheret2.namelike'kiss%'--正确运行
updatet1set(id,name)=(selectid,namefromt2wheret2.namelike'kiss%'--正确运行
updatet1asetid=b.idfromt2bwhereb.id='dkdkd'--sql遇到非法符号
MSSQL:(updatetablename别名,这种写法是不对的)
updatet1setid=b.id,bid=b.bidfromt2bwhereb.bid='dkdkd'--正确运行
如果要用别名,则也要把t1放在from后面
updateaseta.id=b.id,a.bid=b.bidfromt1a,t2bwherea.id=b.idandb.bid='dkdkd'--正确运行(别名放在from后)
综上,更新多个字段,有两种写法,分别是
1、updatetnameset(a1,a2...)=(selecta1,a2...from...)--DB2写法
2、updatetnameseta1=b.a2,a2=b.a2...fromb...--mssql写法
Oracle下面跟db2差不多,环境没搭建好,就不测试了,要用的时候再参考以上两种写法.
简单在mysql下测试,结果如下,mysql与mssql都支持seta1=b.a2,a2=b.a2...fromb.的写法
mysql>updateorder2setid=1,price=2whereordernum='kdkdk'; QueryOK,0rowsaffected(0.00sec) Rowsmatched:0Changed:0Warnings:0 mysql>updateorder2set(id,price)=(1,2)whereordernum='dkdkd';ERROR1064(42000):YouhaveanerrorinyourSQLsyntax;checkthemanualthat correspondstoyourMySQLserverversionfortherightsyntaxtousenear'(id, price)=(1,2)whereordernum='dkdkd''atline1
相关文章推荐
- 关于Update在不同数据库的使用
- 关于Jpa使用Update方法进行更新操作,却没有同步到数据库的原因
- 关于Update语句在不同数据库中的差别(zz)
- 关于Update语句在不同数据库中的差别
- 关于在UpdatePanel控件中使用TreeView控件的不同看法
- 关于Update语句在不同数据库中的差别
- 关于Update语句在不同数据库中的差别
- 关于update语句在不同数据库中的差别
- 两个简单的数据库操作函数,避免对不同的表结构使用不同的update语句
- 关于Update语句在不同数据库中的差别
- 关于Update语句在不同数据库中的差别
- 关于update语句在不同数据库中的差别--[转贴]
- 关于数据库中结果集的使用(上)
- 关于struts中数据库的使用
- 关于在ASP.NET MVC 中使用EF的Code First的方式来读取数据库时的Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
- 关于在applet中使用JDBC访问数据库的一点总结
- 关于局域网内不同电脑之间数据库访问的实现以及推广
- 关于数据库还原时出现的因为数据库正在使用,所以无法获得对数据库的独占访问权“的解决方案
- 关于配置tnsnames来使用PLSQL连接数据库
- 在跨平台的C++程序中使用OTL来操作不同的数据库