sql的select语句用法(SQL update select结合语句详解及应用)
sql的select语句用法
SQL update select结合语句详解及应用QL update select语句
最常用的update语法是:
UPDATE TABLE_NAME SET column_name1 = VALUE WHRER column_name2 = VALUE
如果我的更新值Value是从一条select语句拿出来,而且有很多列的话,用这种语法就很麻烦
第一,要select出来放在临时变量上,有很多个很难保存。 第二,再将变量进行赋值。
列多起来非常麻烦,能不能像Insert那样,把整个Select语句的结果进行插入呢? 就好象下面::
INSERT INTO table1 (c1, c2, c3) (SELECT v1, v2, v3 FROM table2)
答案是可以的,具体的语法如下:
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:
id name 1 王 2 李 3 张
表b:
id ClientName 1 2 3
(MS SQL Server)语句:
UPDATE b SET ClientName = a.name FROM a,b WHERE a.id = b.id
(Oralce)语句:
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 还常常得到事半功倍的效果。
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都支持的语法:
UPDATE A SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)
MS SQL Server不支持这样的语法,相对应的写法为:
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的写法:
UPDATE A SET A1 = B1, A2 = B2, A3 = B3 FROM A, B WHERE A.ID = B.ID
在Oracle和DB2中的写法就比较麻烦了,如下:
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)
到此这篇关于SQL update select结合语句详解及应用的文章就介绍到这了,更多相关SQL update select结合语句内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
- sql server中PageLatch和PageIOLatch等待
- sql语句按字段排序(SQL语句实现表中字段的组合累加排序)
- mysql标签的用法(mysql 的indexof函数用法说明)
- mysql读写分离同步策略(Mysql主从复制与读写分离图文详解)
- mysql云数据库数据恢复(MySQL 利用frm文件和ibd文件恢复表数据)
- java实现数据库备份(MySQL基于java实现备份表操作)
- mysql乐观锁与mvcc(MySQL中的乐观锁,悲观锁和MVCC全面解析)
- sqlserver日期型数据类型是哪个(SQL Server时间戳功能与用法详解)
- mysql与oracle如何直接连接(Oracle更换为MySQL遇到的问题及解决)
- sql server 2000数据库管理(SQL Server 2000/2005/2008删除或压缩数据库日志的方法)
- sql server 获取时间(SQL SERVER中常用日期函数的具体使用)
- mysql为什么优选innodb(如何区分MySQL的innodb_flush_log_at_trx_commit和sync_binlog)
- sqlserver数据库还原教程(SQL Server通过重建方式还原master数据库)
- sparksql的string转日期格式(将string类型的数据类型转换为spark rdd时报错的解决方法)
- mac更改mysql密码(Mac下mysql 8.0.22 找回密码的方法)
- SQL Server与Oracle数据类型的对应关系
- 三兄妹感情再遇波折,人设接连崩塌 《以家人之名》剧情猜不透(三兄妹感情再遇波折)
- 《小敏家》金波想要复婚 这只是他圈套的第1步,更可恶的在后面(小敏家金波想要复婚)
- 小敏家 剧情离谱一锅乱炖,但他们俩绝对是这部剧的一大 亮点(剧情离谱一锅乱炖)
- 《倚天屠龙记》再遭翻拍,关晓彤主演赵敏,蒋劲夫演张无忌,你怎么看(倚天屠龙记再遭翻拍)
- 吴启华与曾舜晞两代张无忌同框,戏里经典的他却没活出原著的潇洒(吴启华与曾舜晞两代张无忌同框)
- 经常发这三种 朋友圈 的人,要迅速屏蔽(经常发这三种朋友圈)
热门推荐
- 检查安装apache(Apache下MP3 防盗链的解决办法)
- docker配置和启动(Docker的安装与配置命令代码实例)
- knn算法详细步骤(Python实现KNNK-近邻算法的示例代码)
- vue项目上线教程(vue项目中使用骨架屏的方法)
- docker数据库如何初始化(Docker启动PostgreSQL时创建多个数据库的解决方案)
- ssm框架中的页面怎么写(apache SHTML网页SSI使用详解)
- 虚拟主机windows和linux啥区别(Linux虚拟主机的好处有哪些?)
- 阿里云服务器远程连不上(阿里云控制台重置密码重启后无法访问服务器的原因及解决方法)
- mysql密码找回方法(MySQL8忘记密码的快速解决方法)
- 云服务器实例和配置(运维必须知道的关于云服务器的十个问题)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9