sql中in/not in 和exists/not exists的用法区别

1;首先来说in/not in的用法

in/not in是确定单个属性的值是否和给定的值或子查询的值相匹配;

     select * from Student s where s.id in(1,2,3);

<pre name="code" class="sql">     select * from Student s where s.name in( select distinct name from Project)

2;现在来说exists/not exists的用法
   exists/not exists是解决两张表的交集和差集
   select * from proj_basic_info p  where   not exists (select * from proj_basic_info q where   p.id=q.id and q.proj_type=1 and q.qy_source='SUAEE')

  <pre name="code" class="sql">   select * from proj_basic_info p  where  exists (select * from proj_basic_info q where   p.id=q.id and q.proj_type=1 and q.qy_source='SUAEE')

总结:如果是判断单个属性是是否匹配时,就选in/not in;如果是判断多个属性时,即可以看做集合时,就选用exitst /not exists;


				
时间: 2024-12-21 21:30:35

sql中in/not in 和exists/not exists的用法区别的相关文章

sql中 with rollup 、with cube、grouping 统计函数用法

with rollup .with cube.grouping CUBE 和 ROLLUP 之间的区别在于: CUBE 生成的结果集显示了所选列中值的所有组合的聚合. ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合. grouping: 当用 CUBE 或 ROLLUP 运算符添加行时,附加的列输出值为1,当所添加的行不是由 CUBE 或 ROLLUP 产生时,附加列值为0. ----------------------------------------------------

sql中left join、right join与inner join的区别

1.数据库 1.1.作者表 1.2.图书表 1.3.出版社表 2.left join left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录. 2.1.sql语句 select * from app01_publisher left join app01_book on app01_publisher.id = app01_book.publish_id 2.2.查询结果 3.right join right join(右联接) 返回包括右表中的所有记录和左表中联结字段

SQL中inner join、outer join和cross join的区别

摘自:http://blog.csdn.net/scythe666/article/details/51881235 缺省情况下是inner join,开发中使用的left join和right join属于outer join,另外outer join还包括full join.下面我通过图标让大家认识它们的区别. 现有两张表,Table A 是左边的表.Table B 是右边的表.其各有四条记录,其中有两条记录name是相同的: 1.INNER JOIN 产生的结果是AB的交集 SELECT

SQL中inner join,outer join和cross join的区别

使用join连表,缺陷的情况下是inner join,开发中使用的left join和right join属于outer join,outer join还包括full join 现有两张表,Table A 是左边的表.Table B 是右边的表.其各有四条记录,其中有两条记录name是相同的: 1.INNER JOIN 产生的结果是AB的交集 SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name 2.LEFT [O

SQL中MERGE关于更新、插入的一种用法

DECLARE @SJD_Code AS VARCHAR(24) DECLARE @SJD_Nendo AS VARCHAR(4) MERGE INTO D_SJD USING (SELECT @SJD_Code [SJD_Code], @SJD_Nendo [SJD_Nendo]) insertData ON D_SJD.[SJD_Code] = insertData.SJD_Code WHEN MATCHED THEN UPDATE SET [SJD_Nendo] = insertData.

SQL中if exists用法细节

用if exists建表[转] 1 判断数据库是否存在 Sql代码 if exists (select * from sys.databases where name = ’数据库名’) drop database [数据库名]  if exists (select * from sys.databases where name = ’数据库名’) drop database [数据库名] 2 判断表是否存在 Sql代码 if exists (select * from sysobjects w

sql中exists,not exists的用法

转 sql中exists,not exists的用法 exists : 强调的是是否返回结果集,不要求知道返回什么, 比如:  select name from student where sex = 'm' and mark exists(select 1 from grade where ...) ,只要exists引导的子句有结果集返回,那么exists这个条件就算成立了,大家注意返回的字段始终为1,如果改成"select 2 from grade where ...",那么返回

SQL中in和exists的用法和效率区别

1. sql中in和exists的区别效率问题 2. SQL中IN和EXISTS用法的区别

SQL中EXISTS怎么用[转]

SQL中EXISTS怎么用 1 2 3 4 分步阅读 EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False 方法/步骤 1 EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或FalseEXISTS 指定一个子查询,检测 行 的存在. 语法: EXISTS subquery参数: subquery 是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字).

数据库——SQL中EXISTS怎么用2(转)

数据库sql语句的exists总结 sql exists in 学习 先来比较下语法: --deals=交易表,areas=地域表,例如香港:我们的目的:查看有交易的地域 select * from areas where id in (select city_id from deals); select * from areas where id in   (select city_id from deals where deals.city_id = areas.id); select *