SQL update select结合语句详解及应用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了SQL update select结合语句详解及应用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2479字,纯文字阅读大概需要4分钟。
内容图文
![SQL update select结合语句详解及应用](/upload/InfoBanner/zyjiaocheng/488/daff393bc44545c488b904e094885730.jpg)
QL update select语句
最常用的update语法是:
1 2 |
UPDATE TABLE_NAME
SET column_name1 = VALUE WHRER column_name2 = VALUE
|
如果我的更新值Value是从一条select语句拿出来,而且有很多列的话,用这种语法就很麻烦
第一,要select出来放在临时变量上,有很多个很难保存。
第二,再将变量进行赋值。
列多起来非常麻烦,能不能像Insert那样,把整个Select语句的结果进行插入呢?
就好象下面::
1 2 3 |
INSERT INTO table1
(c1, c2, c3)
(SELECT v1, v2, v3 FROM table2)
|
答案是可以的,具体的语法如下:
1 2 3 4 5 6 |
UPDATE table1 alias
SET (column_name,column_name ) = (
SELECT (column_name, column_name)
FROM table2
WHERE column_name = alias.column_name)
WHERE column_name = VALUE
|
下面是这样一个例子:
两个表a、b,想使b中的memo字段值等于a表中对应id的name值
表a:
1 2 3 4 |
id name
1 王
2 李
3 张
|
表b:
1 2 3 4 |
id ClientName
1
2
3
|
(MS SQL Server)语句:
1 |
UPDATE b SET ClientName = a.name FROM a,b WHERE a.id = b.id
|
(Oralce)语句:
1 |
UPDATE b SET (ClientName) = (SELECT name FROM a WHERE b.id = a.id)
|
update set from 语句格式
当where和set都需要关联一个表进行查询时,整个update执行时,就需要对被关联的表进行两次扫描,显然效率比较低。
对于这种情况,Sybase和SQL SERVER的解决办法是使用UPDATE…SET…FROM…WHERE…的语法,实际上就是从源表获取更新数据。
在 SQL 中,表连接(left join、right join、inner join 等)常常用于 select 语句。
其实在 SQL 语法中,这些连接也是可以用于 update 和 delete 语句的,在这些语句中使用 join 还常常得到事半功倍的效果。
1 2 |
UPDATE T_OrderForm SET T_OrderForm.SellerID =B.L_TUserID
FROM T_OrderForm A LEFT JOIN T_ProductInfo B ON B.L_ID=A.ProductID
|
用来同步两个表的数据!
Oralce和DB2都支持的语法:
1 |
UPDATE A SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)
|
MS SQL Server不支持这样的语法,相对应的写法为:
1 |
UPDATE A SET A1 = B1, A2 = B2, A3 = B3 FROM A LEFT JOIN B ON A.ID = B.ID
|
个人感觉MS SQL Server的Update语法功能更为强大。MS SQL SERVER的写法:
1 |
UPDATE A SET A1 = B1, A2 = B2, A3 = B3 FROM A, B WHERE A.ID = B.ID
|
在Oracle和DB2中的写法就比较麻烦了,如下:
1 2 |
UPDATE A SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)
WHERE ID IN (SELECT B.ID FROM B WHERE A.ID = B.ID)
|
原创文章如转载请注明,转载自:www.aimks.com
本文链接:http://www.aimks.com/sql-update-the-select-statement-application.html
SQL update select结合语句详解及应用
标签:rac cti 数据库 sel _id 相对 多列 需要 orm
本文系统来源:http://www.cnblogs.com/code101/p/7259211.html
内容总结
以上是互联网集市为您收集整理的SQL update select结合语句详解及应用全部内容,希望文章能够帮你解决SQL update select结合语句详解及应用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。