T-SQL高级查询
原创
©著作权归作者所有:来自51CTO博客作者文刀二建的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、子查詢:
子查询在WHERE语句中的一般用法:
SELECT … FROM 表1 WHERE 字段1 >(子查询)
外面的查询称为父查询,括号中嵌入的查询称为子查询
UPDATE、INSERT、DELETE一起使用,语法类似于SELECT语句
将子查询和比较运算符联合使用,必须保证子查询返回的值不能多于一个
例如:
SELECT * FROM stuInfo
WHERE stuAge>( SELECT stuAge FROM stuInfo where stuName='李斯文')
GO
二、使用子查询替换表连接
一般来说,表连接都可以用子查询替换,但有的子查询却不能用表连接替换
子查询比较灵活、方便,常作为增删改查的筛选条件,适合于操纵一个表的数据
表连接更适合于查看多表的数据
例如:
SELECT stuName FROM stuInfo
WHERE stuNo=(SELECT stuNo FROM stuMarks WHERE writtenExam=60)
GO
三、IN子查询
IN后面的子查询可以返回多条记录,常用IN替换等于(=)的比较子查询
例如:
SELECT stuName FROM stuInfo
WHERE stuNo IN
(SELECT stuNo FROM stuMarks WHERE writtenExam=60)
GO
四、EXISTS子查询
如果子查询的结果非空,即记录条数1条以上,则EXISTS (子查询)将返回真(true),否则返回假(false)
EXISTS也可以作为WHERE 语句的子查询,但一般都能用IN子查询替换
EXISTS子查询的语法:
IF EXISTS (子查询)
语句
例如:
/*--采用EXISTS子查询,进行酌情加分--*/
IF EXISTS (SELECT * FROM stuMarks WHERE writtenExam>80)
BEGIN
print '本班有人笔试成绩高于分,每人加分,加分后的成绩为:'
UPDATE stuMarks SET writtenExam=writtenExam+2
SELECT * FROM stumarks
END
ELSE
BEGIN
print '本班无人笔试成绩高于分,每人可以加分,加分后的成绩:'
UPDATE stuMarks SET writtenExam=writtenExam+5
SELECT * FROM stumarks
END
GO
相反:NOT EXISTS子查询
例如:
IF NOT EXISTS (SELECT * FROM stuMarks WHERE
writtenExam>60 AND labExam>60)
BEGIN
print '本班无人通过考试,试题偏难,每人加分,加分后的成绩为:'
UPDATE stuMarks
SET writtenExam=writtenExam+3,labExam=labExam+3
SELECT * FROM stuMarks
END
ELSE
BEGIN
print '本班考试成绩一般,每人只加分,加分后的成绩为:'
UPDATE stuMarks
SET writtenExam=writtenExam+1,labExam=labExam+1
SELECT * FROM stuMarks
END
GO
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
SQL数据库入门06:游标、存储过程的操作及T-SQL程序设计
本文介绍基于Microsoft SQL Server软件,实现数据库T-SQL语言程序设计,以及游标的定义、使用与存储过程的创建、信息查找的方法~
SQL 数据库 SQL Server MySQL 存储过程 -
T-SQL 高级查询
T-SQL 高级查询
T-SQL高级查询 -
SQL Server T-SQL高级查询
高级查询在中用得是最频繁的,也是应用最广泛的
SQL sql 子查询 ide -
T-SQL高级查询 自动保存(转载)
欢迎大家加入.net技术交流群:(QQ群:100862931) 目的:希望对.net技术感兴趣的朋友们踊跃加入,共同探讨,共同提高和进步!
职场 数据库 休闲 100862931 asp.net sq -
T-SQL查询进阶--变量
概述变量对于一种语言是必不可少的一部分,当然,对于T-SQL来讲也是一样。在简单查询中,往往很少用到变量,但无论 参数,具体
局部变量 赋值 sql 全局变量 数据类型