MYSQL 子查询

mysql数据库子查询

概念SQL语句中嵌套SELECT语句 称为嵌套查询 又称子查询
SELECT * FROM t1 WHERE colunm1 = (SELECT column1 FROM t2);

子查询外部的语句可以是INSERT/UPDATE/DELETE/SELECT

根据子查询结果不同,子查询可以分为四种情况
标量子查询   --返回结果是单个值
列子查询   -- 返回结果为一列
行子查询   -- 返回结果为一行
表子查询  -- 返回结果多行多列

子查询语句位置可以WHERE FROM SELECT 之后

  

(1)子查询例句 


        变量子查询返回一个值  作为需要的字段条件  合并语句以后 就是标量子查询
(SELECT id(需要字段) FROM dept(表名)  WHERE name(字段) = '销售部')

1.SELECT * FROM emp(表名) WHERE dept.id(条件字段) = 4
2.SELECT * FROM emp(表名) WHERE dept.id(条件字段) =(SELECT id(需要字段) FROM dept(表名)  WHERE name(字段) = '销售部')

(2)列子查询   -- 返回结果为一列

     解释:

        常用操作符 IN ,  NOT IN ,  ANY  ,SOME,  ALL、
        IN 在指定的集合范围之内 多选一
        NOT IN  不在指定的集合范围之内
        ANY 子查询返回列表中,有任意一个满足即可
        SOME 与ANY等同,使用过SOME的地方都可以使用ANY
        ALL 子查询返回列表的所有值都必须满足

       例句:
SELECT id FROM dept WHERE name='销售部'  or name = '人力资源'

SELECT * FROM  emp WHERE dept_id in (2 ,4)

合并后
SELECT * FROM  emp WHERE dept_id in (SELECT id FROM dept WHERE name='销售部'  or name = '人力资源')

行子查询   -- 返回结果为一行
常用操作符 IN ,  NOT IN ,  = ,<> 

SELECT salary , mangerid  FROM emp WHERE name = '张无忌'

SELECT * FROM emp WHERE (salary , managerid )  =(12500,1)

合并后
SELECT * FROM emp WHERE (salary , managerid )  =(SELECT salary , mangerid  FROM emp WHERE name = '张无忌')


表子查询  -- 返回结果多行多列
常用操作符 IN 

例句
SELECT job , salary FROM emp WHERE name ='鸡哥' or name = '巴哥'

SELECT * FROM emp WHERE (job , salary ) in (select job ,salary FROM emp WHERE name ='鸡哥' or name = '巴哥')

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值