[SQL] SQL 基础知识梳理(五) - 复杂查询
2017-03-20 09:55
381 查看
SQL 基础知识梳理(五) - 复杂查询
CREATE TABLE Shohin ( 商品编号 CHAR(4) NOT NULL, 商品名称 VARCHAR(100) NOT NULL, 商品分类 VARCHAR(32) NOT NULL, 销售单价 INTEGER , 进货单价 INTEGER , 登记日期 DATE , PRIMARY KEY (商品编号) ); INSERT INTO Shohin VALUES ('0001', 'T恤' ,'衣服', 1000, 500, '2009-09-20'); INSERT INTO Shohin VALUES ('0002', '打孔器', '办公用品', 500, 320, '2009-09-11'); INSERT INTO Shohin VALUES ('0003', '运动T恤', '衣服', 4000, 2800, NULL); INSERT INTO Shohin VALUES ('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20'); INSERT INTO Shohin VALUES ('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-15'); INSERT INTO Shohin VALUES ('0006', '叉子', '厨房用具', 500, NULL, '2009-09-20'); INSERT INTO Shohin VALUES ('0007', '擦菜板', '厨房用具', 880, 790, '2008-04-28'); INSERT INTO Shohin VALUES ('0008', '圆珠笔', '办公用品', 100, NULL, '2009-11-11');
建表语句:CREATE TABLE Shohin
1.普通子查询和关联子查询的区别
思考:选取出各商品分类中高于该分类平均销售单价的商品?
图
图 因为内部的子查询不是前一节中的标量子查询(这里返回三行结果),所以报错
【备注】在 WHERE 子句中使用子查询时,该子查询的结果必须为单一值。
--正确的语句:采用关联子查询 SELECT * FROM dbo.Shohin s1 WHERE 销售单价 > ( SELECT AVG(s2.销售单价) AS avg_销售单价 FROM dbo.Shohin s2 WHERE s1.商品分类 = s2.商品分类 GROUP BY s2.商品分类 )
图
关键作用的语句:在子查询中添加的 WHERE 子句的条件。该条件的意思是:在同种商品中对个商品的销售单价和平均销售单价作比较。
2.结合条件一定要写在子查询
图:把关联条件移到子查询之外
这里涉及到关联名称的作用域。子查询内部设定的关联名称,只能在该子查询内部使用。也可以这样说:“内部可以看到外部,而外部看不到内部”。
备注
这里采用 MS SQL Server 进行验证,不保证所有的 DBMS 执行结果正确。《SQL 基础知识梳理》系列
《SQL 基础知识梳理(一) - 数据库与 SQL》《SQL 基础知识梳理(二) - 查询基础》
《SQL 基础知识梳理(三) - 聚合和排序》
《SQL 基础知识梳理(四) - 数据更新》
《SQL 基础知识梳理(五) - 复杂查询》
《SQL 基础知识梳理(六)- 函数、谓词、CASE 表达式》
《SQL 基础知识梳理(七)- 集合运算》
【博主】反骨仔
【原文】http://www.cnblogs.com/liqingwen/p/5939796.html
【参考】《SQL ゼロからはじめるデータベース操作》
相关文章推荐
- SQL 基础知识梳理(五) - 复杂查询
- [SQL] SQL 基础知识梳理(二) - 查询基础
- 【SQLServer】T-SQL查询学习总结(2)[基础知识]
- Oracle基础知识笔记(8) 复杂查询及总结
- SQL基础知识 - 数据查询
- [SQL] SQL 基础知识梳理(七)- 集合运算
- Java软件开发基础知识梳理之(2)------动态创建PreparedStatement解决SQL中带的in条件
- MS sql server 基础知识回顾(二)-表连接和子查询
- SQL基础知识--多行查询结果拼接
- SQL查询语言的基础知识
- Java软件开发基础知识梳理之(7)------Hibernate查询数据
- [SQL] SQL 基础知识梳理(三) - 聚合和排序
- 编写 SQL 查询:让我们从基础知识开始
- [SQL] SQL 基础知识梳理(六)- 函数、谓词、CASE 表达式
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
- SQL点滴17—使用数据库引擎存储过程,系统视图查询,DBA,BI开发人员必备基础知识
- SQL使用数据库引擎存储过程,系统视图查询,DBA,BI开发人员必备基础知识
- SQL点滴17—使用数据库引擎存储过程,系统视图查询,DBA,BI开发人员必备基础知识
- [SQL] SQL 基础知识梳理(四) - 数据更新
- 编写 SQL 查询:让我们从基础知识开始