sql进阶-多表查询和复合查询


sql作为大家工作中每天都在接触的内容,重要性不言自明,下面是我近期遇到的的一些内容,分享出来,如有问题,欢迎指正。


l  SELECT uid as u, vid as v FROM TableA WHEREvid='684020793';

这样为列取别名,查询结果中就会以别名显示查询结果

 

l  SELECT * from TableA WHERE uid = (SELECTuid as u FROM TableA WHERE vid='684020793'); -- 或者使用some

这样使用子查询(括号内)的查询结果,作为查询条件进行父操作;some()包含指定即可

l  SELECT TableA.uid as u, certid asshenfenzheng from TableA JOIN TableC ON TableA.uid=TableC.uid;

表连接 join on

l  SELECT uid ,balance FROM (SELECT * from TableAwhere balance >20000) as A;

以子查询的结果作为一张表 进行查询,一定需要as A,否则提示错误Every derived table must have its own alias

 

l  SELECT * FROM TableL where vid in (SELECT vidfrom TableA WHERE realname in('NxWX74TgH5E=','9HkoYt/0dBQ=','2MfFa2Frq0N4CCjkieTeUw=='));

子查询作为条件。运用in


l  SELECT * FROM ((SELECT * from TableA where`status`=0) as A JOIN (SELECT * FROM TableL) as B ON A.vid=B.vid);

两个子查询分别作为AB表进行join后作为新表进行查询,这时,sql最后加上as C 会报错!


注意: 在操作生产环境数据或者进行DB变更中,sql应该尽量高效,减少子查询,将可以查询到的条件都查询出来,而不是内置子查询


学习资料:

http://www.w3school.com.cn/sql/sql_in.asp

http://www.cnblogs.com/kissdodog/archive/2013/06/03/3116284.html

http://www.cnblogs.com/yank/p/3672478.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值