三、高级查询

高级查询

/*子查询*/
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必须结构相同,列类型,数目,次序,数据类型相同

 

/*distinct*/
USE pubs
SELECT AVG(DISTINCT price)
FROM titles
WHERE type = 'business'
--
如果使用 DISTINCT,那么在计算总和、平均值或计数之前,先消除重复的值。
--
如果使用 DISTINCT 关键字,表达式必须只包含列名。而不能包含算术表达式。

 

/*table类型变量*/

declare @mtab table(mid int,mname varchar(10))
insert into @mtab
print '
更新之前'
select * from @mtab
update @mtab set mid=1009 where mid=1001
print '
更新之后'
select * from @mtab

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值