时间:2021-05-23
QL update select语句
最常用的update语法是:
UPDATE TABLE_NAMESET 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 aliasSET (column_name,column_name ) = (SELECT (column_name, column_name)FROM table2WHERE 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_TUserIDFROM 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结合语句内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
SQL%NOTFOUND是一个布尔值。与最近的sql语句(update,insert,delete,select)发生交互,当最近的一条sql语句没有涉及任何行
MySQL数据库insert和update语句引:用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另外一种就是更新语句,也
notepad正则表达式添加sql引号,具体内容请看下文详解。一般sql语句会经常用到给括号里的内容添加引号,sql如下?12345678Select*From
sql语句中默认是不区分大小写的,所以语句:Sql代码SELECT*FROMRecEngineBizInfoWHERERecEngineBizName='QQ'
1.查询激活的执行中的sql,查看有哪些更新update的sql。select*frompg_stat_activitywherestate='active';