多表查询

/*基本连接*/
select a.Name,b.Name
from T_Employee a,T_Department b
where a.DepartmentId=b.Id /*内连接,消除没有匹配连接条件的项*/
select a.Name,b.Name
from T_Employee a inner join T_Department b
on a.DepartmentId=b.Id select a.Name,b.Name
from T_Employee a inner join T_Department b
on a.DepartmentId=b.Id and b.IsDelete=1 select a.Name,b.Name
from T_Employee a inner join T_Department b
on a.DepartmentId=b.Id
where b.IsDelete=1 select a.Name,b.Name
from T_Employee a join T_Department b--inner可以省略
on a.DepartmentId=b.Id
where b.IsDelete=1 /*左外连接,保留没有匹配连接条件的左边表的项*/
select a.Name,b.Name
from T_Employee a left outer join T_Department b--outer可以省略
on a.DepartmentId=b.Id select a.Name,b.Name
from T_Employee a left outer join T_Department b--outer可以省略
on a.DepartmentId=b.Id and b.IsDelete=1--满足此连接条件的才显示b表内容,保留左边表的没有匹配连接条件的项 select a.Name,b.Name
from T_Employee a left outer join T_Department b--outer可以省略
on a.DepartmentId=b.Id
where b.IsDelete=1--相当于先执行前三行,再用where语句进行筛选 /*右外连接,保留没有匹配连接条件的右边表的项*/
select a.Name,b.Name
from T_Employee a right outer join T_Department b--outer可以省略
on a.DepartmentId=b.Id select a.Name,b.Name
from T_Employee a right outer join T_Department b--outer可以省略
on a.DepartmentId=b.Id and b.IsDelete=1--满足此连接条件的才显示a表内容,保留右边表的没有匹配连接条件的项 select a.Name,b.Name
from T_Employee a right outer join T_Department b--outer可以省略
on a.DepartmentId=b.Id
where b.IsDelete=1--相当于先执行前三行,再用where语句进行筛选 /*全连接,先列出左边表的所有项,保留没有匹配连接条件的左右两边表的项*/
select a.Name,b.Name
from T_Employee a full outer join T_Department b--outer可以省略
on a.DepartmentId=b.Id select a.Name,b.Name
from T_Employee a full outer join T_Department b--outer可以省略
on a.DepartmentId=b.Id and b.IsDelete=1--先列出左边表的所有项,保留没有匹配连接条件的左右两边表的项 select a.Name,b.Name
from T_Employee a full outer join T_Department b--outer可以省略
on a.DepartmentId=b.Id
where b.IsDelete=1--相当于先执行前三行,再用where语句进行筛选 /*交叉连接,select的b表的字段分别来匹配所有的select的a表字段*/
select a.Name,b.Name
from T_Employee a cross join T_Department b select a.Name,b.Name
from T_Employee a cross join T_Department b
where b.IsDelete=1--相当于先执行前两行,再用where语句进行筛选 /*自连接,在同一个表上进行连接*/
select a.Name,a.IsDelete, b.Name
from T_Department a,T_Department b
where a.IsDelete=b.IsDelete select a.Name,a.IsDelete, b.Name
from T_Department a,T_Department b
where a.IsDelete=b.IsDelete and a.Id<>b.Id and a.Name='广东省'
/*联合查询,将两个查询的结果连接起来,所以select的个数必须相同,类型必须可转换为相同的,可以空起来占位
,union all表示显示所有的列,尽管出现重复,union 表示只显示不重复的信息
*/
select a.Name ,a.BaseSalary,b.Name
from T_Employee a,T_Department b
where a.DepartmentId=b.Id and a.GenderId='403A0BD5-A304-4981-9535-ADA7AF2BFB51'
union
select '',SUM(a.BaseSalary),''
from T_Employee a,T_Department b
where a.DepartmentId=b.Id and a.GenderId='403A0BD5-A304-4981-9535-ADA7AF2BFB51'
union
select '',AVG(a.BaseSalary),''
from T_Employee a,T_Department b
where a.DepartmentId=b.Id and a.GenderId='403A0BD5-A304-4981-9535-ADA7AF2BFB51'
order by BaseSalary /*子查询*/
select a.Name ,a.BaseSalary,b.Name
from T_Employee a,T_Department b
where a.DepartmentId=b.Id
and a.GenderId='403A0BD5-A304-4981-9535-ADA7AF2BFB51'
and a.BaseSalary< (select AVG(a.BaseSalary)+1
from T_Employee a,T_Department b
where a.DepartmentId=b.Id
and a.GenderId='403A0BD5-A304-4981-9535-ADA7AF2BFB51'
) /*子查询嵌套*/
select a.Name ,a.BaseSalary,b.Name
from T_Employee a,T_Department b
where a.DepartmentId=b.Id
and a.GenderId='403A0BD5-A304-4981-9535-ADA7AF2BFB51'
and a.name in (select Name
from T_Employee a,T_SalarySheet b
where a.DepartmentId=b.DepartmentId
and b.Year=(select Year from T_SalarySheet where Id='E0AD51DE-C6A2-4BBE-BF85-D978EAEF9BE9'
)
) /*exists 如果exists有结果,就开始查询主select*/
select a.Name ,a.BaseSalary,b.Name
from T_Employee a,T_Department b
where exists(select * from T_Employee where Name='个') declare @address varchar(20)
declare @pwd varchar(10)
set @address='他告诉'
set @pwd='个'
if exists(select * from T_Employee a where a.Address =@address and a.name =@pwd )
print '登录成功'
else
print '登录失败' /*交查询,得到相交的部分*/
select a.Name ,a.BaseSalary
from T_Employee a
intersect
select a.Name ,a.BaseSalary from T_Employee a where Name='个' /*差查询,在第一个select中去除这两个相交的部分*/
select a.Name ,a.BaseSalary
from T_Employee a
except
select a.Name ,a.BaseSalary from T_Employee a where Name='个'

select的使用(二)的更多相关文章

  1. MySQL(九)之数据表的查询详解(SELECT语法)二

    上一篇讲了比较简单的单表查询以及MySQL的组函数,这一篇给大家分享一点比较难得知识了,关于多表查询,子查询,左连接,外连接等等.希望大家能都得到帮助! 在开始之前因为要多表查询,所以搭建好环境: 1 ...

  2. freemarker写select组件(二十二)

    一,讲解一 1.宏定义 <#macro select id datas> <select id="${id}" name="${id}"> ...

  3. select模型(二 改进服务端)

    一. int select(int fds,fd_set *readfds,fd_set * writefds,fd_set * exceptfds,struct timeval * timeout) ...

  4. freemarker写select组件(二)

    freemarker写select组件 1.宏定义 <#macro select id datas value=""> <select id="${id ...

  5. MySql:SELECT 语句(二)排序 ORDER BY 的使用

    1.按单列排序 语句: SELECT col FROM  tablename ORDER  BY  col; ( 一般情况下, ORDER BY 子句中使用的列为选择的列,但也可以使用其他列) 2.按 ...

  6. select()函数用法二

    Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如 connect.accept.recv或recvfrom这样的阻塞程序 ...

  7. MySQL SELECT语法(二)SELECT...INTO语法

    源自MySQL 5.7 官方手册 SELECT...INTO Syntax 一.SELECT...INTO介绍 SELECT...INTO用来将查询结果存储在变量或者写入文件中. SELECT ... ...

  8. [转]ThinkPHP中实例化对象M()和D()的区别,select和find的区别

    1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会 ...

  9. SQL入门语句之SELECT和WHERE

    一.SQL入门语句之SELECT SELECT语句用于从数据库表中获取数据,结果表的形式返回数据.这些结果表也被称为结果集 1.从数据库表中取部分字段 select 字段A,字段B from tabl ...

  10. ThinkPHP中实例化对象M()和D()的区别,select和find的区别

    原文:ThinkPHP中实例化对象M()和D()的区别,select和find的区别 1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在 ...

随机推荐

  1. HDFS的Java客户端操作代码(查看HDFS下的文件是否存在)

    1.查看HDFS目录下得文件是否存在 package Hdfs; import java.io.IOException; import java.net.URI; import org.apache. ...

  2. (转)从内存管 理、内存泄漏、内存回收探讨C++内存管理

    http://www.cr173.com/html/18898_all.html 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟 ...

  3. IOS学习--UILable使用手册(20150120)

    第一步:创建一个UILable对象 UILabel *lable = [[UILabel alloc]initWithFrame:CGRectMake(, , , )]; 第二步:设置对象的各种属性 ...

  4. iOS 原生二维码扫描(可限制扫描区域)

    篇文章的主要原因不是展示如何使用  AVFoundation 来进行二维码扫描,更主要的是限制扫描二维码的范围.(因为默认的是全屏扫描) 项目遇到扫描二维码的功能需求,这里我放弃了使用三方库,而采用了 ...

  5. 导入Android工程源码出现乱码问题的解决方法

    可以尝试着从以下三个方法进行调试,一般情况下会完美解决的: 1.windows->Preferences->General->Content Types->Text->J ...

  6. Eclipse启动Tomcat报错,系统缺少本地apr库

    Eclipse启动Tomcat报错,系统缺少本地apr库. Tomcat中service.xml中的设置情况. 默认情况是HTTP协议的值:protocol="HTTP/1.1" ...

  7. .htaccess内容

    <IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteCond %{REQUEST_FILENA ...

  8. 原生Ajax + Promise

    有原生写的ajax + promise嫁接下 ;(function(root){ var LD = function(obj){ if( obj instanceof LD ) return obj; ...

  9. phpcms 如何获取文章

    请求地址http://127.0.0.1/phpcms/index.php?m=content&c=index&a=show&catid=6&id=8 先来判断地址对应 ...

  10. [Android1.5]TextView跑马灯效果

    from: http://www.cnblogs.com/over140/archive/2010/08/20/1804770.html 前言 这个效果在两周前搜索过,网上倒是有转载,可恨的是转载之后 ...