子查询练习

#全外
SELECT b.*,bo.*
FROM beauty b 
FULL OUTER JOIN  `boys` bo 
ON b.boyfriend_id=bo.id;


#交叉连接
SELECT b.*,bo.*
FROM beauty b 
CROSS JOIN boys bo


#查询编号>3的女神的男朋友信息,如果有就列出详情,如果没有,用Null填充
SELECT  b.*,bo.*
FROM  beauty b
LEFT JOIN   boys bo ON b.`boyfriend_id`=bo.`id`
WHERE   b.id>3

# 查询那个城市没有部门
SELECT    d.*,l.*
FROM  locations l 
LEFT JOIN  departments d ON l.location_id=d.location_id
WHERE d.department_id IS NULL




# 查询部门名字为sal或IT的员工信息
SELECT  first_name,last_name,department_name
FROM  employees e 
LEFT JOIN departments d  ON d.department_id=e.department_id
WHERE d.department_name IN('Sal','IT') 


#子查询
/*
出现在其他语句中的select 语句,称为子查询或内查询
外部的查询语句,称为主查询或外查询
select 后面
from 后面
支持表子查询
where 或having后面 
标量子查询  (单)√
列子查询 (多)√
行子查询
exists 后面(相关子查询)
表子查询
按结果集的行列数不同
    标量子查询  结果集只有一行-列
    列子查询   结果集只有一列多
    行子查询  结果集一行多行
    表子查询  结果集一般为多行多列
*/

#一、where 或having 后面

/*
1、标量子查询 单行子查询
2、列子查询 多行子查询
3、行子查询(多列多行)

特殊
1、子查询放在括号内
2、子查询一般放在条件的右侧
3、 标量子查询,一般搭配着单行操作符使用
》《 >= <= = <>
列子查询,一般搭配着多行操作符使用
in,any/some all
子查询的执行优于主查询执行,主查询的条件用到了子查询的结果集
*/

#1、标量子查询
# 查询Abel的工资
SELECT  salary
FROM employees
WHERE last_name = 'Abel'

#查询员工的信息,满足salary >查询Abel的工资
SELECT  * FROM  employees
WHERE salary>(SELECT  salary
FROM employees
WHERE last_name = 'Abel')


#案例2:题目:返回job_id与141号员工相同,salary 比143号员工多的员工。job_id 和工资


#查询 141号员工的job_id
SELECT job_id FROM employees
WHERE employee_id  = 141


#查询141号员工的salary   
SELECT salary    FROM employees
WHERE employee_id  = 143


#查询员工的姓名,jbo_id 和工资,要求job_id  = 1     salary >2

SELECT first_name , job_id ,salary 
FROM  employees
WHERE job_id = (SELECT job_id FROM employees
WHERE employee_id  = 141) AND salary>= (SELECT salary    FROM employees
WHERE employee_id  = 143)

#案例3: 返回公司工资最少的员工的last_name,job_id 和salary

SELECT MIN(salary)
FROM employees


SELECT job_id,salary , last_name
FROM  employees
WHERE salary = (SELECT MIN(salary)
FROM employees)

#查询最低工资大于50号部门最低工资的部门ID和其最低工资
SELECT MIN(salary)
FROM employees
WHERE department_id=50

SELECT  department_id ,MIN(salary)
FROM employees
GROUP BY  department_id
HAVING MIN(salary)>(SELECT MIN(salary)
FROM employees
WHERE department_id=50)


#非法使用标量子查询





©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 夜莺2517阅读 128,087评论 1 9
  • 版本:ios 1.2.1 亮点: 1.app角标可以实时更新天气温度或选择空气质量,建议处女座就不要选了,不然老想...
    我就是沉沉阅读 7,361评论 1 6
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,814评论 28 54
  • 兔子虽然是枚小硕 但学校的硕士四人寝不够 就被分到了博士楼里 两人一间 在学校的最西边 靠山 兔子的室友身体不好 ...
    待业的兔子阅读 2,759评论 2 9

友情链接更多精彩内容