Oracle DB 使用子查询来解决查询
子查询是一个SELECT语句,它嵌入到另一个SELECT语句的子句中。通过使用子查询,可以用简单的语句构建功能强大的语句。当需要从表
定义子查询
• 描述子查询可以解决的问题类型
• 列出子查询的类型
• 编写单行和多行子查询
• 子查询:类型、语法和准则
• 单行子查询:
– 子查询中的组函数
– 带有子查询的HAVING子句
• 多行子查询
– 使用ALL或ANY运算符
• 使用EXISTS运算符
• 子查询中的空值
谁的薪金高于Abel 的薪金?
子查询:
Abel 的薪金是多少?
主查询:
哪些雇员的薪金高于Abel 的薪金?
使用子查询解决问题
假设要编写一个查询来找出谁的薪金高于Abel 的薪金。
要解决此问题,需要使用两个查询:一个查询用于查找Abel 的薪金,另一个查询用于查找薪金超过该金额的人员。
通过组合这两个查询,即将一个查询放在另一个查询中,可以解决此问题。
内部查询(即子查询)会返回一个外部查询(即主查询)要使用的值。使用子查询等同于执行两个连续的查询,而且将第一个查询的结果用作第二个查询中的搜索值。
• 先执行子查询(内部查询),再执行主查询(外部查询)。
• 主查询会使用子查询的结果。
SELECT select_list FROM table WHERE expr operator
(SELECT select_list FROM table);
子查询是一个SELECT语句,它嵌入到另一个SELECT语句的子句中。通过使用子查询,可以用简单的语句构建功能强大的语句。当需要从表中选择行,而选择条件却取决于该表自身中的数据时,子查询非常有用。
可以在许多SQL 子句中使用子查询,其中包括以下子句:
• WHERE子句
• HAVING子句
• FROM子句
在该语法中:
operator包括比较条件,,例如>、=或IN
注:比较条件分为以下两类:单行运算符(>、=、>=、、ANY、ALL、EXISTS)。
推荐阅读
-
解决mybatis使用char类型字段查询oracle数据库时结果返回null问题
-
解决mybatis使用char类型字段查询oracle数据库时结果返回null问题
-
解决MySQL中IN子查询会导致无法使用索引问题
-
用一张表来存储数据状态,并且可以进行多状态精确查询;使用二进制来表示数据状态,并且是可以无顺序的状态;解决使用中间表来存储数据的多状态;数据状态还可以这么玩;
-
oracle子查询中使用some、any和all的案例
-
解决Mysql多行子查询的使用及空值问题
-
Oracle 子查询因子化 浅谈(with的使用)
-
在Oracle的子查询中使用some,any和all
-
Oracle 子查询因子化 浅谈(with的使用)
-
解决MySQL中IN子查询会导致无法使用索引问题