易截截图软件、单文件、免安装、纯绿色、仅160KB

sql中 in 、not in 、exists、not exists 用法和差别

exists (sql 返回结果集为真)
not exists (sql 不返回结果集为真)
如下:
表A
ID NAME
1    A1
2    A2
3  A3
表B
ID AID NAME
1    1 B1
2    2 B2
3    2 B3
表A和表B是1对多的关系 A.ID => B.AID
SELECT ID,NAME from A WHERE EXIST (SELECT * from B WHERE A.ID=B.AID)
执行结果为
1 A1
2 A2
原因可以按照如下分析
SELECT ID,NAME from A WHERE EXISTS (SELECT * from B WHERE B.AID=1)
--->SELECT * from B WHERE B.AID=1有值返回真所以有数据
SELECT ID,NAME from A WHERE EXISTS (SELECT * from B WHERE B.AID=2)
--->SELECT * from B WHERE B.AID=2有值返回真所以有数据
SELECT ID,NAME from A WHERE EXISTS (SELECT * from B WHERE B.AID=3)
--->SELECT * from B WHERE B.AID=3无值返回真所以没有数据
NOT EXISTS 就是反过来
SELECT ID,NAME from A WHERE NOT EXIST (SELECT * from B WHERE A.ID=B.AID)
执行结果为
3 A3
===========================================================================
EXISTS = IN,意思相同不过语法上有点点区别,好像使用IN效率要差点,应该是不会执行索引的原因
SELECT ID,NAME from A  WHERE ID IN (SELECT AID from B)
NOT EXISTS = NOT IN ,意思相同不过语法上有点点区别
SELECT ID,NAME from A WHERE ID NOT IN (SELECT AID from B)
下面是普通的用法:
SQL中IN,NOT IN,EXISTS,NOT EXISTS的用法和差别:
  IN:确定给定的值是否与子查询或列表中的值相匹配。
  IN 关键字使您得以选择与列表中的任意一个值匹配的行。
  当要获得居住在 California、Indiana 或 Maryland 州的所有作者的姓名和州的列表时,就需要下列查询:
  SELECT ProductID, ProductName from Northwind.dbo.Products WHERE CategoryID = 1 OR CategoryID = 4 OR CategoryID = 5
  然而,如果使用 IN,少键入一些字符也可以得到同样的结果:
  SELECT ProductID, ProductName from Northwind.dbo.Products WHERE CategoryID IN (1, 4, 5)
  IN 关键字之后的项目必须用逗号隔开,并且括在括号中。
  下列查询在 titleauthor 表中查找在任一种书中得到的版税少于 50% 的所有作者的 au_id,然后从 authors 表中选择


相关文档:

SQL跨服查询

今日产品部要导批数据,但是需要连接查询查询的几个表不在同一服务器上。所以我开始是这么干的:
1.查询一台服务器的数据,并导入本地Excel
2.查询另一台服务器的数据,并导入本地Excel
3.Excle导入数据库,数据库自带了Excel导入数据库的功能
4.连接查询,OVER!
后来才知道产品部要全国50多个城市的数据,所以每个城 ......

巧用SQL的全局临时表防止用户重复登录

巧用SQL的全局临时表防止用户重复登录
文章来自:http://www.cnblogs.com/lindayyh/archive/2010/04/05/1704763.html
在我们开发商务软件的时候,常常会遇到这样的一个问题:怎样防止用户重复登录我们的系统?特别是对于银行或是财务部门,更是要限制用户以其工号身份多次登入。
可能会有人说在用户信息表中加一字段判 ......

SQL语句中DateAdd 函数说明

返回 
  返回包含一个日期的 Variant (Date),这一日期还加上了一段时间间隔。
语法
  DateAdd(interval, number, date)
  DateAdd 函数语法中有下列命名参数:
  interval 必要。字符串表达式,是所要加上去的时间间隔。
  number 必要。数值表达式,是要加上的时间间隔的数目。其数值可以为正数(得 ......

SQL语句得到存储过程关联哪些表名


 
 
SELECT DISTINCT '['+user_name(b.uid)+'].['+b.name+']' AS 对象名,b.type AS 类型
from sysdepends a,sysobjects b
WHERE b.id=a.depid
    AND a.id=OBJECT_ID('过程名');
 
 
EXEC SP_DEPENDS '过程名';
 
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号