易截截图软件、单文件、免安装、纯绿色、仅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中的 datetime 格式[转]

SQL中的 datetime 格式[转]
2009-05-16 10:42
语句及查询结果:
SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
SELECT CONVERT(varchar(100), GETDATE(), 1): 05/16/06
SELECT CONVERT(varchar(100), GETDATE(), 2): 06.05.16
SELECT CONVERT(varchar(100), GETDATE(), 3): 16/05/06
SELECT CONV ......

用SQL语句从aspnet_profile表里取用户的Profile值

The aspnet_Profile table contains the following fields: UserId, PropertyNames, PropertyValuesString, PropertyValuesBinary,  and LastUpdatedDate. The PropertyNames field contains a string delimited with colons (:) that identify which profile fields are stored, what their datatype is and their of ......

SQL_Plus操作命令 附录B SQL*PLUS

SQL_Plus操作命令  附录B SQL*PLUS
SQL*PLUS 是Oracle提供的一个工具程序,它不仅可以用于测试,运行SQL语句和PL/SQL块,而且还可以用于管理Oracle数据库
 1.启动sql*plus
 为了使用sql*plus,必须首先要启动sql*plus。Oracle不仅提供了命令行和图形界面的sql*plus,而且还可以在web浏览器中运行.
  ......

通过HTTP访问SQL Server Analysis Service 2005

目的:通过HTTP访问MS SSAS 2005
配置方法:
如果想访问对应的cube,则需指定cube所在的服务器名称
使之可以通过HTTP协议进行访问,可以返回MDX查询所得到的结果集和元数据
查询结果集的方法是:Execute(),它能够返回MDX语句的查询结果
查询结果集元数据方法:Discover(),它能够返回MDX语句的元数据信息。该方法较Ex ......

常用SQL语句(Oracle)(转)

ORACLE中字段的数据类型
   字符型    char        范围  最大2000个字节 定长
               char(10)   '张三' 后添空格6个把10个字节补满  '张三 &nb ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号