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

来源:互联网 发布:java jar 运行参数 编辑:程序博客网 时间:2024/06/05 03:54


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

0 0
原创粉丝点击