数据库子查询

文章介绍了如何在数据库查询中使用子查询,包括IN子查询用于查找商品反馈信息的客户,比较子查询筛选积分高于平均值的客户,EXISTS子查询则用来找出从未购买商品的客户。此外,还展示了其他各种复杂子查询的实例,如查询特定条件下的客户信用和业务员任务完成情况。
摘要由CSDN通过智能技术生成

子查询:在查询条件中,可以使用另一个查询的结果作为条件的一部分,作为查询条件一部分的查询称为子查询。

IN子查询用于判断一个给定值是否在子查询的结果集中,格式为:  

 Expression [ NOT ] IN ( subquery )

比较子查询。它让表达式的值与子查询的结果进行比较运算,格式为:  

expression  比较运算符 [ ALL | SOME | ANY ] ( subquery )

EXISTS子查询。带EXISTS的子查询不返回任何记录,只产生逻辑值TRUE或者FALSE,它的作用是在WHERE子句中测试子查询返回的行是否存在。 格式为:

[ NOT ] EXISTS ( subquery )

课堂实践

--1.IN子查询。查询有商品反馈信息的客户信息,要求显示客户编号和客户联系人。
  USE DB_CRM
  --打开数据库DB_CRM
  SELECT CID,CContact
  FROM TB_Customer
  WHERE CID IN(SELECT CID  
                FROM TB_Feedback)
  --IN子查询比较的字段必须是一样的
  
--2.比较子查询。查询客户积分在平均积分以上的客户信息,要求显示的客户编号、客户单位、客户联系人和客户积分。
  USE DB_CRM
  --打开数据库DB_CRM
  SELECT CID,CCompany,CContact,CIntegration
  FROM TB_Customer
  WHERE CIntegration >=all(SELECT CIntegration
                   FROM TB_Customer)
  --相比较的数据类型必须是一样的


--3.EXISTS子查询。查询从来没有购买商品的客户信息,要求显示客户编号、客户单位、客户联系人和客户电话。
  USE DB_CRM
  --打开数据库DB_CRM
  SELECT CID,CCompany,CContact,CPhone
  FROM TB_Customer
  WHERE NOT EXISTS (SELECT *
                     FROM TB_Buy
				    WHERE TB_Customer.CID=CID)
  --EXISTS只返回TRUE或者FALSE。


--(4)使用子查询,查询客户积分高于70的客户信息,要求显示客户编号、客户信用档案编号、客户品德及素质评分。


						use DB_CRM
						select CID,CCreditID,CustAblity
						from TB_CustCredit
						where  CID in (SELECT CID
									FROM TB_Customer 
									where  CIntegration>70)



--(5)使用子查询,统计至少订购过两次的客户信息,要求显示客户编号、客户单位和客户联系人。




							use DB_CRM
							select CID,CCompany,CContact
							from TB_Customer
							where CID in(select CID
							from TB_Buy
							group by CID
							having count(CID)>=2)



--(6)使用子查询,查询不良记录评分最高的客户信息,要求显示客户编号、客户单位和客户联系人。

							USE DB_CRM
							select CID,CContact,CCompany
							from TB_Customer
							where CID in (select CID
							from TB_CustCredit
							where CustPoorRD>=all(select CustPoorRD
							from TB_CustCredit))


--(7)使用子查询,查询比上海客户信用得分高的浙江的客户信息,要求显示客户编号、客户单位和客户联系人。

select cid,ccompany,ccontact
from tb_customer
where cid in
(select cid
from tb_custcredit 
where custcredit in
(select custcredit
from tb_customer,tb_custcredit
where tb_customer.cid=tb_custcredit.cid 
and caddress like '%浙江%' and custcredit >all
(select custcredit
from tb_customer,tb_custcredit
where tb_customer.cid=tb_custcredit.cid 
and caddress like '%上海%')))


--(8)使用子查询,查询在2013年没有完成任务计划的业务员信息,要求显示业务员编号、姓名和所在部门。
select SID,Sname,SDID
from tb_salesman
where sid in
(select SID from tb_task
where tyear='2013' and tperform='否')

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

big data alone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值