SQL笔记(三)

如果两个表的共有字段,但对表1只知道该共有字段的描述,具体不明,要对两个各表进行查询,就需要用到子查询。

select O.PartNum,P.Description,O.Quantity from 订单 O,部件 P where O.PartNum=P.PartNum

and O.PartNum=(select PartNum from 部件 where Description='公路自行车');

在子查询中使用汇总函数

如AVG(),查询条件添加一个AND O.Quantity*P.Price>(select AVG(O.Quantity*P.Price)) from 订单 O,部件 P where O.PartNum=P.PartNum

子查询的嵌套

如果想给消费超过平均花费的客户发送一个特别通知,只需前面添加 select all C,NAME C.Address C.State C.ZIP  from 客户 C  where C.NAME in(上面的查询条件)

子查询中使用GROUP BY和 HAVING

select NAME,AVG(Quantity) Avarage from 订单 group by NAME
HAVING AVG(Quantity) >(select AVG(Quantity) from 订单);  括号内为数量的平均值,查询大于平均值的客户。

exists的使用,检查查询是否确实存在输出,从而实现对查询确实有结果才输出的控制。

还有ALL ANY  SOME  这些关键字与IN的区别是,他们可以进行比较,如

select NAME from 订单 where NAME>ANY(select NAME from 订单 where NAME='JACK BIKE');

select NAME from 订单 where NAME<>ALL(select NAME from 订单 where NAME='JACK BIKE');输出名字不为JACK BIKE的所有记录

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值