49.Oracle数据库SQL开发之 子查询——编写多行子查询
欢迎转载,转载请标明出处:blog.csdn.net/notbaron/ar…\
多行子查询可以向外部的SQL语句返回一行或多行记录。要处理返回多行记录的子查询,外部查询可以使用IN、ANY或ALL操作如。
store@PDB1> select product_id,name from productswhere product_id in (1,2,3);
PRODUCT_ID NAME
---------- ------------------------------
1 Modern Science
2 Chemistry
3 Supernova
1. 在多行子查询中使用IN 操作符
IN可以用来检查在一个值列表中是否包含指定的值。这个值列表也可以来自一个子查询返回结果。NOT IN执行的操作正好与IN在逻辑上相反。
store@PDB1>select product_id,name from products where product_id in (select product_idfrom products where name like '%e%');
PRODUCT_ID NAME
----------------------------------------
1 Modern Science
2 Chemistry
3 Supernova
5 Z Files
6 2412: The Return
7 Space Force 9
8 From Another Planet
11 Creative Yell
12 My Front Line
9 rows selected.
查看NOT IN操作符:
store@PDB1> select product_id,name from productswhere product_id not in (select product_id from purchases);
PRODUCT_ID NAME
---------- ------------------------------
4 Tank War
5 Z Files
6 2412: The Return
7 Space Force 9
8 From Another Planet
9 Classical Music
10Pop 3
11Creative Yell
12My Front Line
9 rows selected.
2. 在多行子查询中使用ANY操作符
ANY操作符可以用来将一个值与一个列表中的任何值进行比较。在查询中ANY操作符之前,必须使用一个 =,<>, <,>,<=,>=操作符。
store@PDB1> select employee_id,last_name fromemployees where salary < any (select low_salary from salary_grades);
EMPLOYEE_ID LAST_NAME
----------- ----------
3 Hobbs
4 Jones
2 Johnson
3. 在多行子查询中使用ALL操作符
ALL操作符可以用来将一个值与一个列表中的所有值进行比较。
ALL操作符之前,必须使用一个 =,<>,<,>,<=或>=操作符。
store@PDB1> select employee_id,last_name fromemployees where salary > all (select high_salary from salary_grades);
no rows selected
说明,没有员工的工资高于最高工资。