您的位置:首页 > 数据库 > Oracle

oracleI基础入门(9)--table--子查询

2012-06-12 10:26 281 查看
子查询
我们可以在一个 SQL 语句中放入另一个 SQL 语句。当我们在 WHERE 子句或 HAVING
子句中插入另一个 SQL 语句时,我们就有一个子查询 (subquery) 的架构。 子查询的作用
是什么呢?第一,它可以被用来连接表格。另外,有的时候子查询是唯一能够连接两个表格
的方式。
子查询的语法如下:
SELECT "栏位1" FROM "表格" WHERE "栏位2" in (SELECT "栏位1" FROM "表格" WHERE [条件])
例如 "LIKE"。绿色的部分代表外查询,红色的部分代表内查询。
我们就用刚刚在阐述 SQL 连接时用过的例子:
Store_Information 表格
store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999
Geography 表格
region_name store_name
East Boston
East New York
West Los Angeles
West San Diego
我们要运用 subquery 来找出所有在西部的店的营业额。我们可以用下面的 SQL 来达到我
们的目的:
SELECT SUM(Sales) FROM Store_Information
WHERE Store_name IN
(SELECT store_name FROM Geography
WHERE region_name = 'West')
结果:
SUM(Sales)
2050
在这个例子中,我们并没有直接将两个表格连接起来,然后由此直接算出每一间西区店面的
营业额。我们做的是先找出哪些店是在西区的,然后再算出这些店的营业额总共是多少。
在以上的例子,内部查询本身与外部查询没有关系。这一类的子查询称为『简单子查询』
(Simple Subquery)。如果内部查询是要利用到外部查询提到的表格中的栏位,那这个字查询
就被称为『相关子查询』 (Correlated Subquery)。以下是一个相关子查询的例子:
SELECT SUM(a1.Sales) FROM Store_Information a1
WHERE a1.Store_name IN
(SELECT store_name FROM Geography a2
WHERE a2.store_name = a1.store_name)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: