from server sql 拼接统计两个子查询_[SQL SERVER系列]之嵌套子查询和相关子查询

子查询有两种类型,一种是只返回一个单值的子查询,这时它可以用在一个单值可以使用的地方,这时子查询可以看作是一个拥有返回值的函数;另外一种是返回一列值的子查询,这时子查询可以看作是一个在内存中临时存在的数据表。

1.嵌套子查询

嵌套子查询的执行不依赖于外部的查询。执行过程:

(1)执行子查询,其结果不被显示,而是传递给外部查询,作为外部查询的条件使用。

(2)执行外部查询,并显示整个结果。

嵌套子查询一般可以分为:返回单值的子查询 和 返回一个列表的子查询。

--返回单值的子查询

SElECT 图书名,作者,出版社,价格 FROM Books

WHERE 价格 >

(

SELECT AVG(价格)  FROM Books

)

--返回列表的子查询

SElECT * FROM Readers

WHERE 读者编号 IN

( SELECT 读者编号 FROM [Borrow History] )

2.相关子查询

相关子查询的执行依赖于外部查询。多数情况下是子查询的WHERE子句中引用了外部查询的表。执行过程:

(1)从外层查询中取出一个元组,将元组相关列的值传给内层查询。

(2)执行内层查询,得到子查询操作的值。

(3)外查询根据子查询返回的结果或结果集得到满足条件的行。

(4)然后外层查询取出下一个元组重复做步骤1-3,直到外层的元组全部处理完毕。

--查询Books表中大于该类图书价格平均值的图书信息

SElECT图书名,出版社,类编号,价格FROM Books As aWHERE价格>(SELECT AVG(价格)FROM Books AS bWHERE a.类编号=b.类编号)

使用SQL跨表批量导入数据时实用的例子

利用相关子查询只插入test2中不存在的记录,避免因插入重复记录而失败

insert into test2(userid, username)

select userid, username from test1

where not exists(

select userid from test2 where

test2.userid = test1.userid

)

EXISTS就是用来测试子查询的结果是否为空,如果结果集为空则匹配结果为false,否则匹配结果为true。

--如果存在山东省的读者,将T_Book表中所有记录查询出来;否则,查询结果为空

SELECT * FROM T_Book WHERE EXISTS (SELECT * FROM T_Reader WHERE FProvince='ShanDong' )

--查询某一类图书的分类id,最小最大出版年份,数量

select C.FId,

MIN(B.FYearPublished) as minpublished,

MAX(B.FYearPublished) as maxpublished,

COUNT(0) as Number

from T_Category C inner join T_Book B

ON C.FId = B.FCategoryId

group by C.FId

--查询某一类图书的分类id,图书的名称,最早出版年份

select T_Category.FId, T_Book.FName, T_Book.FYearPublished from

T_Category inner join T_Book

ON T_Category.FId = T_Book.FCategoryId

WHERE T_Book.FYearPublished = (

select MIN(T_Book.FYearPublished) from

T_Book WHERE T_Book.FCategoryId = T_Category.FId

)

3.WITH和子查询

SQL提供了WITH子句用于为子查询定义一个别名,这样就可以通过这个别名来引用这个子查询了,也就是实现“一次定义多次使用”。

WITH子句的格式为:WITH别名AS (子查询)

WITH person_tom AS (

SELECT * FROM T_Person   WHERE FName='TOM'

)

SELECT * FROM T_Person WHERE FAge=person_tom.FAge OR FSalary=person_tom.FSalary

参考文献:

1.程序员的sql金典

如果您有什么问题,欢迎在下面评论,我们一起讨论,谢谢~

如果您觉得还不错,不妨点下右下方的推荐,有您的鼓励我会继续努力的~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/531905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java中包容易出现的错误及权限问题

/* 3,权限在不同地方的体现: public protected default private 同一类中: ok ok ok ok 同一包中: ok ok ok 子类中: ok ok …

c语言程序算一元二次方程,如何用C语言来计算一元二次方程

C语言实现一元二次方程的解 源程序#include#includefloat x1,x2,p,q,d;float great_than_zero(float,float);float equql_to_zero(float,float);float smaller_than_zero(float,float);main(){float a,b,c;printf(“Enter a,b,c:”);scanf(“%f%f%f”,&a,&b,&c);db…

cosin等于多少_cos45度等于多少

cos45度√2/2。角A的邻边比斜边叫做角A的余弦,记作cosA(由余弦英文cosine简写得来),即cosA等于角A的邻边/斜边(直角三角形)。二倍角公式sin2α2sinαcosαtan2α2tanα/(1-tan^2(α))cos2αcos^2(α)-sin^2(α)2cos^2(α)-11-2sin^2(α)积化和差公式sinα…

c语言宏定义比较三个数大小,C语言中两个宏进行大小对比,其中一个没有定义,这种行为如何定义。...

1.C语言中两个宏进行大小对比&#xff0c;其中一个没有定义&#xff0c;这种行为如何定义呢&#xff1f;在学习U-boot的过程中遇到这么一个定义&#xff1a;# if (CONFIG_ENV_ADDR > CONFIG_SYS_MONITOR_BASE) && \(CONFIG_ENV_ADDR CONFIG_ENV_SIZE) < \(CONFI…

java中变量运算细节 (2)

/* 目的&#xff1a;测试变量的运算方式 结果&#xff1a;byte a, b, c;a bc;或者 a b10形如这种形式的算式&#xff0c; 等式的右边的运算结果默认的都是int型的&#xff01;因为等式右边有变量&#xff0c; 编译器无法确定变量的内容&#xff0c;因为它是变量&#xff01;所…

c语言设计二级考试程序修改题,全国计算机二级考试C语言复习题与答案解析

全国计算机二级考试C语言复习题与答案解析三、程序修改题下列给定程序中函数fun的功能是&#xff1a;将长整型数中各位上为奇数的数依次取出&#xff0c;构成一个新数放在t中。高位仍在高位&#xff0c;低位仍在低位。例如&#xff0c;当s中的数为87653142时&#xff0c;t中的数…

ccs变量观察窗口在哪_CCS3.3查看变量图形

CCS3.3查看变量图形首先声明&#xff0c;觉得ccs3.3中Graph并不是什么量都可以观察的&#xff0c;原因是跟断点有关&#xff0c;反正对于我的仿真器XDS510的是如此。即程序运行到断点处会有延时&#xff0c;对于普通信号可能没什么影响&#xff0c;但对于高频信号来说&#xff…

poj 2777(线段树的节点更新策略)

1 /*2 之前的思想是用回溯的方式进行颜色的更新的&#xff01;如果用回溯的方法的话&#xff0c;就是将每一个节点的颜色都要更新3 通过子节点的颜色情况来判断父节点的颜色情况 &#xff01;这就是TLE的原因&#xff01;4 5 后来想一想没有必要 &#xff01;加入[a, b] 区间有…

c语言计算机编程例题详解,计算机C语言编写程序题及答案解析精选.doc

计算机C语言编写程序题及答案解析精选2011年计算机二级C语言编写程序题及答案解析精选【4.1】已知银行整存整取存款不同期限的月息利率分别为&#xff1a;0.315% 期限一年0.330% 期限二年月息利率 &#xff1d; 0.345% 期限三年0.375% 期限五年0.420% 期限八年要求输入存钱的本…

mfsort shell语法_Shell中字符串排序的几种方法

Shell中字符串排序的几种方法【方法一】按ASCII正向排序备注:1) tr将子字符串中的空白转换为换行符&#xff0c;再用sort排序2) sort无参的话&#xff0c;默认按ASCII正向排序【方法二】按ASCII正向排序备注:1) -r参数: 按ASCII码反向排序2) 在使用sort,uniq等组合命令时候【方…

java中并不是任意多个接口都可以实现多实现

interface A{public abstract void show(); }interface B{public abstract int show(); }public class Test implements A, B{public void show(){System.out.println("A show!");}/*只写 void show&#xff08;&#xff09;出现的问题&#xff1a;Test不是抽象的, 并…

变形监测期末复习_寒假即将来临,中小学期末考试时间是什么时候?

2019年下学期也快结束&#xff0c;各个区的中小学考试时间安排已经公布了。今年&#xff0c;初二将首次进行全市统考&#xff0c;统考的意义重大&#xff0c;希望家长们可以督促孩子们重视起来&#xff0c;考出好成绩!下面&#xff0c;让我们来看一下2019下学期深圳各区中小学期…

c语言2048项目报告,c语言----项目_小游戏2048

2048 小游戏 主要是针对逻辑思维的一个训练.主要学习方面:1.随机数产生的概率.2.行与列在进行移动的时候几种情况.3.messagebox的使用#include #include #include #include using namespace std;int board[4][4] {0}; //二维数组int if_need_rand; //是否生成随机数int if_gam…

java中的显示初始化和特定初始化

public class Test{public static void main(String[] args){Child child new Child();} }class Parent{public Parent(){super();show();//this.show(); 因为是Child类对象调用了super()来构造其父类的部分;所以父类中的this&#xff08;随着其构造方法入栈的&#xff09;是指…

etl工程师 面试题_数据仓库工程师面试题笔试.doc

数据仓库工程师面试题姓名&#xff1a;____张小核______ 开始时间&#xff1a;_____:______ 结束时间&#xff1a;_____:_____数据库使用过哪些数据库&#xff1f;试说出它们的异同。答&#xff1a;使用过SQL SERVER和ORACLE它们的区别是&#xff1a;1.sql server 是中小型企业…

为什叫c语言,为什么c语言叫c语言?

1972年&#xff0c;美国贝尔实验室的 D.M.Ritchie 在B语言的基础上最终设计出了一种新的语言&#xff0c;他取了BCPL的第二个字母作为这种语言的名字&#xff0c;这就是C语言。1973年初&#xff0c;C语言的主体完成。Thompson和Ritchie用它完全重写了UNIX。随着UNIX的发展&…

java中对象的初始化过程

class Parent{int num 8;// ->3Parent(){//super(); // ->2//显示初始化 // ->3//构造代码段 // ->4show(); // ->5}{// ->4System.out.println("Parent constructor code run->");}public void show(){//被覆盖System.out.println(&quo…

马斯克翻跟头机器人_马斯克又搞事情 用VR训练机器人模仿人类动作

据该公司的开发者介绍&#xff1a;“我们已经研发了一款新算法——单次模仿学法算法。” 人们先在VR中完成一次操作&#xff0c;随后机器人通过观看视频来模仿人类的行为。为了证明该算法&#xff0c;设计者进行了堆叠彩色方块实验。人类在VR环境中按顺序移动方块。机器人首先通…

c语言通过指针变量输出10个元素,C语言程序设计第2版指针程序设计(10页)-原创力文档...

C 语言程序设计 - 理论方法与实践(第 2 版) 7.4.1 简单指针变量作函数参数 例 7-9 用比较交换法 &#xff0c;将一维数组的最 大值移到数组的最 末元素位置&#xff0c;交换 过程用上述 swap() 函数实现。 #include int main() { void swap(int *,int *); int i,a[10]{33,-12,9…

java中对象多态时成员变量,普通成员函数及静态成员函数的调用情况

/* 样例1&#xff1a;class Parent{int num 3;}class Child extends Parent{int num 4;} *//* 样例2&#xff1a; class Parent{}class Child extends Parent{int num 4; } *//* 样例3&#xff1a; class Parent{void show(){System.out.println("Parent Show!");…