`
lovnet
  • 浏览: 6725690 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

SQL语句使用Left Outer join代替In删除多条记录

 
阅读更多

SQL语句使用Left Outer join代替In删除多条记录

使用IN语句作为删除多条记录的判断条件,除了效率低下外,还受IN集合最大个数(1000,超过此数将报错)的限制,所以,如果使用IN语句作为删除多条记录的条件有很大的隐患。为了说明该问题,定义下面两个表,作个简单的测试。

“院系表”的定义

CREATE TABLE [dbo].[dep](

[DepID] [int] IDENTITY(1,1) NOT NULL,

[Name] [char](20) NULL,

[MaxMember] [int] NULL

) ON [PRIMARY]

“学生表”的定义

CREATE TABLE [dbo].[student](

[ID] [int] IDENTITY(1,1) NOT NULL,

[DepID] [int] NULL,

[Name] [nvarchar](10) NULL,

[Age] [int] NULL

) ON [PRIMARY]

现在要把MaxMember大于50的院系表关联的所有学生表的记录删除。

使用IN的删除方式:

delete from student where ID

in(select A.ID as ID from student A left outer join dep B on A.DepID=B.DepID where B.MaxMember>50)

限制:1、效率低下

2、受IN集合最大个数为1000的限制。

解决办法:使用Left Outer Join方式:

delete A from student A left outer join dep B on A.DepID=B.DepID where B.MaxMember>50

分享到:
评论

相关推荐

    inner join、 left join 、right join、 outer join之间的区别

    inner join、 left join 、right join、 outer join之间的区别

    LINQ to SQL语句之Join和Order By

    [t0].[Discontinued] FROM [dbo].[Products] AS [t0] LEFT OUTER JOIN [dbo].[Suppliers] AS [t1] ON [t1].[SupplierID] = [t0].[SupplierID] WHERE ([t1].[Country] = @p0) AND ([t0].[UnitsInStock] = @p1) -- @p0...

    经典SQL语句大全

    1、1=1,1=2的使用,在SQL语句组合时用的较多 “where 1=1” 是表示选择全部 “where 1=2”全部不选, 如: if @strWhere !='' begin set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + ...

    SQL语句多表查询

    1、左连接 left join 或 left outer join 2、右连接 right join 或 right outer join 3、完全外连接 full join 或 full outer join 二、内连接 join 或 inner join 三、交叉连接 cross join 四、两表关系为一对多...

    经典全面的SQL语句大全

    经典SQL语句大全 下列语句部分是Mssql语句,不可以在access中使用。  SQL分类:  DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)  DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)  DCL—数据控制...

    Oracle中sql语句(+)符号代表连接的使用讲解

    oracle中sql语句(+)符号代表连接 (+)在=前边为右连接 (+)在=后边为左连接 SELECT a.*, b.* from a(+) = b就是一个右连接,等同于select a.*, b.* from a right join b SELECT a.*, b.* from a = b(+)就是一个左连接...

    join on 语句及扩展

    Join on/inner join on/full join on/full outer join on/left join on/right join on/cross join on; 在使用jion时,on和where条件的区别;

    SQL多表连接查询实例分析(详细图文)

    1、左连接 left join 或 left outer joinSQL语句:select * from student left join course on student.ID=course.ID执行结果:左外连接包含left join左表所有行,如果左表中某行在右表没有匹配,则结果中对应行右...

    超实用sql语句

    10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1...

    用“万能数据库查询分析器”对 SQLite 进行测评

    在SQL(Structured Query Language)语言DML中,有四大语句堪称其精髓部分,分别是CASE WHEN语句,Left Outer Join | Left Join | Right Outer Join | Right Join | Inner Join语句,WITH AS语句,UNION、UNION ALL...

    LINQ_to_SQL语法及实例大全

    3.左外部联接(Left Outer Join): 17 4.投影的Let赋值(Projected let assignment): 17 5.组合键(Composite Key): 18 6.可为null/不可为null的键关系 (Nullable/Nonnullable Key Relationship): 19 LINQ to SQL...

    sql经典语句一部分

    1、1=1,1=2的使用,在SQL语句组合时用的较多 “where 1=1” 是表示选择全部 “where 1=2”全部不选, 如: if @strWhere !='' begin set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + ...

    软件开发高手须掌握的4大SQL精髓语句(二)

    随着计算机在社会各领域应用的深入,软件开发人员不得不面临着或多或少的数据处理、数据库访问。...下面就讲述一下其中之一, Left Outer Join | Left Join | Right Outer Join | Right Join | Inner Join 语句的用法。

    数据库操作语句大全(sql)

    1、1=1,1=2的使用,在SQL语句组合时用的较多 “where 1=1” 是表示选择全部 “where 1=2”全部不选, 如: if @strWhere !='' begin set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' +...

    SQL相关查询技术(有程序代码配合语句)

    COMPUTE BY计算 COMPUTE计算 DATEDIFF函数计算 FORMAT格式化函数改变日期 FROM字句多表查询 GROUP BY查询销售总金额 ...left outer join查询 MID函数取位子 NOT与谓词进行组合条件查询 right outer join查询 等。。。

    mysql把一个表某个字段的内容复制到另一张表的某个字段的SQL语句写法

    实现sql语句1: 代码如下:UPDATE file_manager_folder f1LEFT OUTER JOIN file_manager_folder f2 ON f1.name = f2.name AND f2.parentId = 54SET f1.parentId = 54 WHERE f2.name IS NULL AND f1.id IN (1,2,3);...

    Oracle 数据库连接查询SQL语句

    左连接 (left [outer] join) 左外连接就是将左表的所有数据分别于右表的每条数据进行连接组合,返回的结果除内连接的数据外,还有左表中不符合条件的数据,并在右表的相应列中填上null值。 SQL语句如下: select * ...

    50个常用SQL语句,很好

    from Student left Outer join SC on Student.S#=SC.S# group by Student.S#,Sname 4、查询姓“李”的老师的个数; select count(distinct(Tname)) from Teacher where Tname like '李%'; 5、查询没学过...

    SQL查询技巧(范例宝典)

     实例339 利用聚合函数First或Last求数据表中第一条或最后一条记录 496  10.11 多表查询(连接查询) 498  实例340 利用FROM子句进行多表查询 498  实例341 使用表别名 499  实例342 合并多个结果集...

Global site tag (gtag.js) - Google Analytics