对于子查询SQL语句的记录

子查询可以对查询效率进行优化

1.SELECT子查询

比如查询小刘(所在数据表member)的所在公司名字(数据表company,字段就是公司名)叫什么,需要先找小刘的公司id(字段名comid):

SELEST comid

FROM member

WHERE name = '小刘'

(此时查到小刘公司id等于2, comid= 2),嵌套子查询,写在comid上,comid替换为:

SELECT  name  FROM company  WHERE  id = comid;

即SELEST (SELECT  name  FROM company  WHERE  id = comid)公司名

FROM member

WHERE name = '小刘'

2.WHERE子查询

仍然拿查找小刘的公司名字举例:

SELECT comid FROM member WHERE name =  '小刘'

以上是仍然是第一步寻找小刘公司id,查询结果为2,此时把2当成条件来看,要查询的公司名字在公司表里,查公司表就是FROM company,条件就是WHERE id = 以上写的:

SELECT name  公司名

FROM company

WHERE id = (SELECT comid FROM member WHERE name =  '小刘')

eg:查询小刘小王的公司名,name之间用or链接,属于集合不能写等号了,写IN:

SELECT name 公司名

FROM company

WHERE id  IN(SELECT comid FROM member WHERE  name ='小刘' OR name ='小王')

3.FROM子查询

SELECT子查询和WHERE子查询是把子查询结果当成数据,FROM子查询是把查询结果当成表来看待。

注意:表越多越多好,主要用于三张表以上的连接查询。

比如A,B,C三张表.先查询A和B两张表,再用查询结果和C表链接查询。

第一部还是先找公司id:

SELECT comid FROM member WHERE name =  '小刘'

以上括起来放FROM后面,随便起名t1,并且和company表联查:

SELECT c.name 公司名

FROM(SELECT comid FROM member WHERE name =  '小刘') t1

                company  c        

WHERE t1.c= c.id

以上是子查询三种普通方法,个人做记录,若有错误,烦请指正

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值