网站首页 > 技术文章 正文
表表达式是一种虚拟的表,在物理上并不存在。SOLServer 支持 4种表表达式:派生表公用表表达式、视图和内联表值函数。
派生表
派生表即为放在 FROM 后面的特殊表子查询。它的作用是当成一张虚拟的表,再从虚拟表中查询需要的数据
派生表需要满足以下条件:
(1)派生表必须命名,并且派生表的每一列都必须有列名且列名唯一,对计算列或表达式列可以使用AS命名。
SELECT * FROM
(SELECT employee_id,employee_name FROM employee )
SELECT * FROM
(SELECT employee_id,employee_name FROM employee ) AS A
(2)定义派生表的语句中不能使用ORDER BY,除非使用了 TOP 关键字。
SELECT * FROM
(SELECT employee_id,employee_name FROM employee ORDER BY employee_id) AS A
SELECT * FROM
(SELECT TOP 3 employee_id,employee_name FROM employee ) AS A
但是使用TOP时的ORDER BY 并不能保证输出列表的顺序,此时的ORDER BY的功仅限于用来排序以便挑选满足条件的 TOP 行,挑选完成后它的生命就结束了。如果返回的果正好是顺序的,这是因为这些记录在物理顺序上恰好是顺序的,是碰巧的结果。。如果想要证按照某种顺序输出结果,则应该在外部查询中再次使用ORDER BY子句。
SELECT * FROM
(SELECT TOP 3 employee_id,employee_name FROM employee ) AS A
ORDER BY employee_id DESC
使用派生表的一个好处就是可以在WHERE或GROUPBY子句中使用SELECT阶段的名称。按照查询的逆辑处理顺序,WHERE或GROUPBY在 SELECT阶段之前执行,因此是不能使用SELECT选择列列名的,但是使用派生表可以解决这种问题
SELECT id, name FROM
(SELECT employee_id AS id,employee_name AS name FROM employee ) AS A
WHERE id >3
学习参考资料:《跟韩老师学 SQL Server 数据库设计与开发》
猜你喜欢
- 2025-06-13 Windows安装PostgreSQL、PostGIS数据库
- 2025-06-13 4.直方图介绍和使用|MySQL索引学习
- 2025-06-13 SQLServer 学习笔记1 安装SQLServer2016数据库引擎
- 2025-06-13 学会Sqlserver更应该来学习Azure,对照Sqlserver学Azure
- 2025-06-13 初学者程序员要学好.Net,只要学习这几个框架就够了
- 2025-06-13 谈谈该如何学好《My SQL数据库应用案例教程》这门课程
- 2025-06-13 零基础入门开始学习SQL Server的字符串类型
- 2025-06-13 GitHub标星65K,这套万人期待的 SQL 成神之路PDF,重磅开源分享!
- 2025-06-13 SQL 基础学习更新和删除(十四)
- 2025-06-13 从Sql角度,对比学习Python数据处理包pandas
- 最近发表
- 标签列表
-
- axure 注册码 (25)
- exploit db (21)
- mutex_lock (30)
- oracleclient (27)
- think in java (14)
- javascript权威指南 (19)
- nfs (25)
- componentart (17)
- yii框架 (14)
- springbatch (28)
- oracle数据库备份 (25)
- iptables (21)
- 自动化单元测试 (18)
- python编写软件 (14)
- dir (26)
- connectionstring属性尚未初始化 (23)
- output (32)
- panel滚动条 (28)
- centos 5 4 (23)
- sql学习 (33)
- dfn (14)
- http error 503 (21)
- pop3服务器 (18)
- 图表组件 (17)
- android退出应用 (21)