SQL语言之DQL语言学习(十)子查询
生活随笔
收集整理的這篇文章主要介紹了
SQL语言之DQL语言学习(十)子查询
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
含義:
出現在其他語句中的select語句,稱為子查詢或內查詢外部的查詢語句,稱為主查詢或外查詢
分類
按子查詢出現的位置:
select后面: 僅僅支持標量子查詢
from后面: 支持表子查詢
where或having后面:★ 標量子查詢(單行)列子查詢(多行)√行子查詢
exists后面(相關子查詢) 表子查詢
按結果集的行列數不同:
標量子查詢(結果集只有一行一列>
列子查詢(結果集只有一列多行
行子查詢(結果集有一行多列)
表子查詢<結果集一般為多行多列>
一.where或having后面
1.標量子查詢
案例一:誰的工資比Abel高
SELECT last_name,salary from employees WHERE salary>(SELECT salaryFROM employeesWHERE last_name= 'Abel' )案例二.查詢最低工資大于50號部門最低工資的部門id和其最低工資
SELECT MIN(SAlary),department_id FROM employees GROUP BY department_id HAVING MIN(salary)>(SELECT MIN(salary)FROM employeesWHERE department_id=50 )
2.列子查詢
in / not in :等于列表中的任意一個
any/some 和子查詢返回的一個值比較
all 和子查詢返回的值比較
案例一:返回location_id是1400或1700的部門中的所有員工姓名
SELECT last_name from employees WHERE department_id in( SELECT DISTINCT department_id FROM departments WHERE location_id in (1400,1700) )3.行子查詢
查詢員工編號最小并且工資最高的員工信息
SELECT * from employees WHERE (employee_id,salary)=(SELECT MIN(employee_id),MAX(salary)from employees )
或者
二.Select后面的子查詢
案例.查詢每個部門的員工個數
SELECT d.department_name,(SELECT COUNT(*)FROM employees eWHERE e.department_id = d.department_id ) from departments d三,exists后的(相關子查詢)
exists 即 存在
語法:
exists(完整的查詢語句)
結果:1或0
案例:查詢有員工的部門名
SELECT department_name FROM departments d WHERE EXISTS(SELECT *FROM employees eWHERE d.department_id = e.department_id )總結
以上是生活随笔為你收集整理的SQL语言之DQL语言学习(十)子查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从0搭建一个Springboot+vue
- 下一篇: SQL语言之DQL语言学习(十一)分页查