测试那些事儿—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:子查询查不到结果,结果为真。

原文地址:https://www.cnblogs.com/mgg520813/p/10935810.html

时间: 2024-10-08 23:03:51

测试那些事儿—SQL server exists子查询的相关文章

在SQL Server的子查询、视图、内联函数等数据库对象中,不应该单独使用ORDER BY语句

我们知道在SQL语句中,ORDER BY语句可以用来排序.但是在SQL Server中,如果我们在子查询.视图.内联函数等数据库对象中单独使用ORDER BY语句是不允许的,来看下面的SQL语句: SELECT * FROM ( SELECT [ID],[Code],[Name],[Age],[Sex],[Class] FROM [dbo].[Student] ORDER BY [ID] DESC ) AS T_Student 执行该语句,SQL Server会报错,错误信息如下: The OR

SQL Server查询优化方法(查询速度慢的原因很多,常见如下几种) .

SQL Server查询优化方法(查询速度慢的原因很多,常见如下几种) 标签: sql server优化数据库服务器 2014-12-31 10:13 11988人阅读 评论(0) 收藏 举报 本文章已收录于: 今天看到一位博友的文章,觉得不错,转载一下,希望对大家有帮助,更多文章,请访问:http://blog.haoitsoft.com 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存

关于T-SQL中exists或者not exists子查询的“伪优化”的做法

问题起源 在使用t-sql中的exists(或者not exists)子查询的时候,不知道什么时候开始,发现一小部分人存在一种“伪优化”的一些做法,并且向不明真相的群众传递这一种写法“优越性”,实在看不下去,无法传递给他人正确的指导思想无可厚非,给他人传递错误的思想或者说误导人倒是一种罪恶.本来这个事情是不值得一提的,看到越来越多被误导的群众开始推崇这种做法(甚至开始坚信了),实在是看不习惯,不吐不快.典型的问题如下select * from TableA awhere exists(selec

7-14 EXISTS子查询

EXISTS: 只注重于子查询是否有返回行,如果查有返回行返回结果为值,否则为假 并不使用子查询的结果,仅用于测试子查询是否有返回结果. 语法: IF EXISTS (子查询) BEGIN 语句块 END 例子: IF EXISTS (SELECT *FROM sysdatebases WHRER name="E_Market") DROP DATEBASE B_Market GO CREATE DATEBASE E_Market { } GO 如果数据库里面存在E_Market,那么

SQL SERVER之数据查询

 本篇主要讲解查询语句,所有的示例都会按照下面这张表进行. stuID stuName age sex 11090241031 王小虎 21 男 11090241032 王小六 22 男 11090241033 张三 23 男 1.使用where子句查询表中满足条件的记录 比较查询 算术比较查询 算术比较中常用的就是所谓的>.<.<>.=.!<(不小于).!=(不等于)等,比较的语法如下 select* from T_student where age!>30 se

SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第3部分)(完结)

原文:SQL Server 2012:SQL Server体系结构--一个查询的生命周期(第3部分)(完结) 一个简单的更新查询 现在应该知道只读取数据的查询生命周期,下一步来认定当你需要更新数据时会发生什么.这个部分通过看一个简单的UPDATE查询,修改刚才例子里读取的数据,来回答. 庆幸的是,直到存取方法(Access Methods)前,更新操作和刚才SELECT语句流程是一模一样的. 这次存取方法(Access Methods)需要修改数据,因此在I/O请求传递前,修改的细节要存放于硬盘

Sql Server 存储过程中查询数据无法使用 Union(All)

原文:Sql Server 存储过程中查询数据无法使用 Union(All) 微软Sql Server数据库中,书写存储过程时,关于查询数据,无法使用Union(All)关联多个查询. 1.先看一段正常的SQL语句,使用了Union(All)查询: SELECT ci.CustId --客户编号 , ci.CustNam --客户名称 , ci.ContactBy --联系人 , ci.Conacts --联系电话 , ci.Addr -- 联系地址 , ci.Notes --备注信息 , ai

SQL Server 跨数据库查询

不同服务器数据库之间的数据操作 --创建链接服务器 exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 ' --查询示例 select * from ITSV.数据库名.dbo.表名 --导入示例 select * into 表 from ITSV.数据库名.dbo.表名 --以后不再使用时

SQL Server中的查询

      本博文简单介绍一下SQL Server中常用的几类查询及相关使用的方法.       一.ExecuteScalar方法获取单一值       ExecuteScalar方法是SqlCommand类的方法之一,执行查询,并返回查询所返回的结果集中的第一行第一列.        class Program { static void Main(string[] args) { string strCon = "Data Source=192.168.24.193;Initial Cat