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