mysql in查询_MySQL:子查询关键字(any,some,all,exists,in,比较运算)

5cdccfd52e178e78c05d674669225baa.png

ANY和SOME:满足内层查询其中任一条件的查询结果,或只要满足内层子查询中的任何一个比较条件,就返回一个结果作为外层查询的条件。

ALL:满足内层查询的所有条件,或要满足内层子查询中的所有比较条件,才返回一个结果作为外层查询的条件。

EXISTS:系统对子查询进行运算以判断它是否返回行,①如果至少返回一行,EXISTS结果为true,外层查询语句将执行查询;②如果子查询没有返回任何行,EXISTS返回的结果 false,外层语句将不进行查询。(Not Exists的原理与之类似)

IN:内层查询语句返回一个数据列,这个数据列里的值将用于操作外层查询语句进行。

实例:

数据源:表格Pastavg【数据列Tue_ave有数字3,5,6】,S_order【订单表】

ccaf9b655680a8ea9dc283191461a078.png

858a3070b033d35dd5db895430d5ea08.png

查询订单信息:当S_order里的S_Teu大于(Any/Some)任意Tue_ave的值

mysql> select * from s_order where S_teu> any (select Tue_avg from Past_avg);

e14ce10a6e01ff8be9fe0791213f2e99.png

查询订单信息:当S_order里的S_Teu大于(All)所有Tue_ave的值

mysql> select * from s_order where S_teu> all (select Tue_avg from Past_avg);

8894ae42ced47a67e000000530982ccc.png

查询订单信息:先判断S_order的POD列是否有(Exists)值等于‘Riga’,然后继续查询出CNTR_Q大于2的订单

mysql> select * from S_order

-> where CNTR_Q>2 AND exists

-> (select c_ID from s_order where pod='RIGA');

6987979a2451246166416d253ec026b2.png

查询订单信息:(IN)先查找C_name包含'佐%'的C_id;再用C_id值进行外层查询

mysql> select O_id,POL,POD from s_order where C_id in

-> (select C_id from client where C_name like '佐%');

e3a8c2e5ff137e47746469277e53f5f2.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值