23. SQL Server学习日记- 子查询

一、介绍子查询(Subquery)

以检视表为基础的技术,将建立检视表的SELECT叙述写入FROM子句中子查询的SELECT叙述在执行完毕后会立即被消除需要赋予子查询一个名称,用过即被捨弃

二、建立子查询

延续上一篇中建立的foodsum检视表,与子查询来做比较

建立检视表
--建立foodsum检视表-- CREATE VIEW foodsum ( food_catalg, count_food)ASSELECT food_catalg, count(*)FROM foodGROUP BY food_catalg;--确认检视表资料内容—SELECT food_catalg , count_foodFrom foodsum;
建立子查询foodsum
SELECT food_catalg , count_foodFROM(SELECT food_catalg, count(*) AS count_foodFROM foodGROUP BY food_catalg) AS foodsum;    --AS foodsum为赋予此子查询的名称,也是用过即捨弃的名称--

这两种方法执行结果是一样的
http://img2.58codes.com/2024/20163415NOkOGbeUkn.png

子查询foodsum执行顺序 : 先执行内部SELECT叙述,再执行外围SELECT叙述

http://img2.58codes.com/2024/2016341559ewof6Dp8.png

三、纯量子查询 : 只能回传单栏位或单笔记录

一样使用food资料表
http://img2.58codes.com/2024/20163415kHxQRCAxG3.png

Q:想知道售出单价低于全部早餐品项平均贩售单价的食物

1平均早餐单价的纯量子查询

SELECT AVG(sell_price)From food--执行结果为26--

2筛选售出单价低于全部早餐品项平均贩售单价的食物

SELECT food_id , food_name , sell_priceFROM foodWHERE sell_price < (SELECT AVG(sell_price)From food);                        /--------此部分会变换成26-------/ 

执行结果 : 小于26的sell_price
http://img2.58codes.com/2024/20163415D9c7TpC7Bp.png

执行顺序 : 先执行内部子查询,也就是「平均早餐单价的纯量子查询」,再执行外围筛选的SELECT叙述「售出单价低于全部早餐品项平均贩售单价的食物」

http://img2.58codes.com/2024/20163415FhuTeNrioJ.png


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章