SQL Server2008子查询举例

 1。由订单信息表(TOrder)中,找出最早订单和最晚订单,并按早晚进行排序。(这里默认用升序)

(PS:比较测试中的子查询)

 SELECT * FROM TOrder

    WHERE orderdate=(SELECT MIN(orderdate) FROM TOrder)

    OR orderdate=(SELECT MAX(orderdate) FROM TOrder)

    ORDER BY orderdate

 

 

2.找出订货量大于10的货品信息。

(PS:集合成员中的子查询)

 SELECT * FROMTGoods

 WHERE id IN

 (SELECT gid FROMTOrder o1 WHERE (SELECT SUM(quantity) FROM TOrder o2 WHEREo1.gid=o2.gid)>10)

(1)由订单信息表中得到订货数量大于10的货品编码,即:

SELECT ordernum FROM TOrder as a WHERE

(SELECT SUM(quantity) FROM TOrder as b WHERE a.ordernum=b.ordernum)>10

再按照这里选出的货品编码,由货品信息表中选出这些货品的信息,有如下的SQL语句。

 SELECT * FROM TOrder WHERE ordernum IN

 (SELECT ordernum FROM TOrder as a WHERE

 (SELECT SUM(quantity) FROM TOrder as b WHERE a.ordernum=b.ordernum)>10 )

3.找出有销售业绩的销售人员信息。

(PS:存在性测试中的子查询)

SELECT * FROMTEmployee AS a  WHERE EXISTS

(SELECT id FROMTOrder AS b WHERE a.id=b.eid)

4.查询每种货品订货量大于最小一次订货量的订单信息。

(PS:批量比较测试中的子查询)

(1)大于最小一次订货量,也就是去年该种货品订货量最小一次的订单。有如下的SQL语句。

(PS:使用ANY关键字的比较测试)

SELECT * FROMTOrder AS a WHERE quantity>ANY

SELECT quantity FROM TOrder AS b WHERE a.gid=b.gid)

或:

SELECT * FROM TOrder o1 WHERE quantity>ANY

(SELECT quantity FROM TOrder o2 WHERE o1.gid=o2.gid)  

(2)查询每种货品订货量最大的一次订单信息。

选择每种货品订货量最大的订单。有如下的SQL语句。

(PS:使用ALL关键字的比较测试)

SELECT * FROM TOrder AS a WHERE quantity>=ALL

(SELECT quantity FROM TOrder AS b WHERE a.gid=b.gid)

或:

SELECT * FROM TOrder o1 WHERE quantity>=ALL

(SELECT quantity FROM TOrder o2 WHERE o1.gid=o2.gid)

5.在SQL Server ManagementStudio中,往“上海客户”表中添加客户信息,然后通过子查询语句将客户信息一次性添加到“客户信息”表中。

上海客户表是通过SELECT…INTO语句建立一个空表,它的结构与“客户信息”表相同,所以数据是兼容的。有如下的SQL语句。

(PS:使用子查询向表中添加多条记录)

通过SELECT…INTO语句建立一个空表:

 SELECT *

 INTO TshCustomer

 FROM TCustomer

  WHERE address LIKE '上海%'

 INSERT TCustomer SELECT * FROM TshCustomer

  --查看添加结果

  SELECT * FROM TCustomer

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值