测试那些事儿—SQL server exists子查询

Posted mgg520813

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测试那些事儿—SQL server exists子查询相关的知识,希望对你有一定的参考价值。

exists子查询

技术图片

 

--一次性购买“手机数码”产品的数量超过三个的消费金额打8折

--根据已知项查询未知项

--【1】根据类别名称查询类别编号

select sortid from commoditysort where sortname=‘手机数码‘

--【2】根据类别编号查询商品编号

select commodityid from commodityinfo 

where sortid=

(select sortid from commoditysort where sortname=‘手机数码‘)

--【3】根据商品编号去查询订单表中的购买数量超过三个的订单信息

select commodityid from orderinfo

where commodityid in  --注意此处为in还是=

(

select commodityid from commodityinfo 

where sortid=

(select sortid from commoditysort where sortname=‘手机数码‘))

and amount >3

--【4】购买超过3个的用户的付款金额打8折

if exists(

select commodityid  from orderinfo

where commodityid in  --注意此处为in还是=

(

select commodityid from commodityinfo 

where sortid=

(select sortid from commoditysort where sortname=‘手机数码‘))

and amount >3

)

begin 

 --对付款金额打8折

    update orderinfo set paymoney = paymoney * 0.8

    where commodityid in

    (

select amount from orderinfo

where commodityid in  --注意此处为in还是=

(

select commodityid from commodityinfo 

where sortid=

(select sortid from commoditysort where sortname=‘手机数码‘))

and amount >3

)

end

--通常会使用not exists 对子查询结果进行取反

--exists:子查询查到记录,结果为真,否则结果为假

--not exists:子查询查不到结果,结果为真。

 

以上是关于测试那些事儿—SQL server exists子查询的主要内容,如果未能解决你的问题,请参考以下文章

EXISTS(sql server 2014)不引入子查询时,选择列表中只能指定一个表达式

SQL Server 错误:当子查询没有用 EXISTS 引入时,选择列表中只能指定一个表达式

EXISTS 子句在 SQL Server 中如何工作?

性能调优常见的那些事儿-ORACLE上篇

Sql server not in优化

Android 子线程更新UI那些事儿