日期:2014-05-16  浏览次数:20454 次

三、高级查询

高级查询

/*子查询*/
USE northwind
SELECT orderid, customerid
FROM orders AS or1
WHERE 20 < (SELECT quantity FROM [order details] AS od
???????????? WHERE or1.orderid = od.orderid
??????????????AND??od.productid = 23)

?


--

当子查询的结果唯一的时候,可使用比较运算符
--
不唯一的时候,不可使用比较,必须使用集合运算符
--
集合运算符:not in/in
--gid in(1001)
合法

?

?

?

?


USE pubs
SELECT au_lname, au_fname FROM authors
WHERE 100 IN
(SELECT royaltyper FROM titleauthor
WHERE titleauthor.au_ID = authors.au_id
)

?

?

/*exists*/
USE pubs
SELECT au_lname, au_fname
FROM authors
WHERE exists
?? (SELECT *
?? FROM publishers
?? WHERE authors.city = publishers.city)

?


--EXISTS

用于检查子查询返回的行是否存在
--
该子查询实际上并不返回任何数据,而是返回 TRUE FALSE

?

?

?

/*union*/
--Union
操作符:将两个或更多个 SELECT 语句的结果合并为一个结果集。
--
使用 ALL 子句表示不删除重复的行。
--
集合特性——唯一性,无序性
--
每个union select