mssql sql高效关联子查询的update 批量更新

/*
使用带关联子查询的Update更新 
  --1.创建测试表  
 

create TABLE Table1 
  ( 
  a varchar(10), 
  b varchar(10), 
  c varchar(10), 
  CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED 
  ( 
  a ASC 
  ) 
  ) ON [PRIMARY] 

  create TABLE Table2 
  ( 
  a varchar(10), 
  c varchar(10), 
  CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED 
  ( 
  a ASC 
  ) 
  ) ON [PRIMARY] 
  GO 
  --2.创建测试数据 
  Insert into Table1 values('赵','asds',null) 
  Insert into Table1 values('钱','asds','100') 
  Insert into Table1 values('孙','asds','80') 
  Insert into Table1 values('李','asds',null) 

  Insert into Table2 values('赵','90') 
  Insert into Table2 values('钱','100') 
  Insert into Table2 values('孙','80') 
  Insert into Table2 values('李','95') 
  GO 
  select * from Table1 

  --3.通过Update方式更新 
  Update Table1 set c = (select c from Table2 where a = Table1.a) where c is null 
  GO 

  --4.显示更新后的结果 
  select * from Table1 
  GO 
  --5.删除测试表 
  drop TABLE Table1 
  drop TABLE Table2

时间: 2024-11-08 22:40:01

mssql sql高效关联子查询的update 批量更新的相关文章

【SQL】使用分析函数与关联子查询的比较

由于业务需要,需实现如下功能的sql语句:查询出一个表T中每个不同id值所对应的最大val值.---构造环境. SQL> insert into t values (1,2,1); 已创建 1 行. SQL> insert into t values (1,2,3); 已创建 1 行. SQL> insert into t values (1,3,4); 已创建 1 行. SQL> insert into t values (1,3,5); 已创建 1 行. SQL> ins

MySQL中表子查询与关联子查询的基础学习教程_Mysql

MySQL 表子查询表子查询是指子查询返回的结果集是 N 行 N 列的一个表数据. MySQL 表子查询实例 下面是用于例子的两张原始数据表: article 表: blog 表: SQL 如下: SELECT * FROM article WHERE (title,content,uid) IN (SELECT title,content,uid FROM blog) 查询返回结果如下所示: 该 SQL 的意义在于查找 article 表中指定的字段同时也存在于 blog 表中的所有的行(注意

SQL编程之子查询及注意事项

当一个查询是另一个查询的条件时,称之为子查询.子查 询可以使用几个简单命令构造功能强大的复合命令.子查询最常用于SELECT-SQL命令的 WHERE子句中.子查询是一个 SELECT 语句,它嵌套在一个 SELECT.SELECT...INTO 语句.INSERT...INTO 语句.DELETE 语句.或 UPDATE 语句或嵌套在另一子查询中. 语法:select ....from 表1 where 列1 > (子查询) 外面的查询成为父查询,圆括号嵌入的查询成为称为子查询.SQL Ser

mysql关联子查询的一种优化方法分析_Mysql

本文实例讲述了mysql关联子查询的一种优化方法.分享给大家供大家参考,具体如下: 很多时候,在mysql上实现的子查询的性能较差,这听起来实在有点难过.特别有时候,用到IN()子查询语句时,对于上了某种数量级的表来说,耗时多的难以估计.本人mysql知识所涉不深,只能慢慢摸透个中玄机了. 假设有这样的一个exists查询语句: select * from table1 where exists (select * from table2 where id>=30000 and table1.u

mysql 有就插入没有就更新 on DUPLICATE key update批量更新

on DUPLICATE key update批量更新 mysql有个批量更新的方法,mssql则无此命令用法,mysql的这个方法可以用来批量更新,更为强大的是:如果参数已存在则更新,如果数据库里没有这个参数就插入新的. 举例 insert into xinhuazidian (a, b, c) VALUES ('aaa','bbb','lao8.org'),  ('aaa2','bbb2','m.lao8.org') on DUPLICATE key update b=VALUES(b),

MySQLSQL优化:关联子查询的局限性

  这是MySQL SQL优化的第三篇.公司某个业务系统频繁抛出问题SQL,我们对此类SQL做了基本面统计: 此类SQL近期共执行了12次,最长一次花费480秒,最短286秒 t1表的rows有90多万,始终会扫描这么多不需要的数据 这是由于MySQL查询优化器在处理相关子查询方面存在局限性 MySQL总是会将相关的外层表压到子查询中,它认为这可以更高效地查找数据行. 如果是个小表,情况可能还不会引起我们注意,但是如果外层表示一个非常大的表,那么这个查询的性能会非常槽糕, 很不幸,我们的场景刚好

SQL 基础6—— 子查询

/* 一.子查询     子查询就是位于SELECT.UPDATE.或DELETE语句中内部的查询     二.子查询的分类     单行子查询         返回零行或一行     多行子查询         返回一行或多行     多列子查询         返回多列     相关子查询         引用外部SQL语句中的一列或多列     嵌套子查询         位于其它子查询中的查询   三.子查询语法 */     SELECT select_list     FROM ta

SQL 基础--> 子查询

--========================= --SQL 基础--> 子查询 --=========================     /* 一.子查询     子查询就是位于SELECT.UPDATE.或DELETE语句中内部的查询     二.子查询的分类     单行子查询         返回零行或一行     多行子查询         返回一行或多行     多列子查询         返回多列     相关子查询         引用外部SQL语句中的一列或多列  

如何使用SQL Server嵌套子查询

很多SQL Server程序员对子查询(subqueries)的使用感到困惑,尤其对于嵌套子查询(即子查询中包含一个子查询).现在,就让我们追本溯源地探究这个问题. 有两种子查询类型:标准和相关.标准子查询执行一次,结果反馈给父查询.相关子查询每行执行一次,由父查询找回.在本文中,我将重点讨论嵌套子查询(nested subqueries)(我将在以后介绍相关子查询). 试想这个问题:你想生成一个卖平垫圈的销售人员列表.你需要的数据分散在四个表格中:人员.联系方式(Person.Contact)