多表查询

/*基本连接*/
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. EF Lambda 多表查询

    using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mv ...

  2. 基于Android_volley的Get、Post的方法

    用Android_volley加载网络信息有Get,post两种方式,通过一个例子来说明,在Activity中设置两个Button,分别测试Get.post方法 一般分为三步, 1. 创建一个Requ ...

  3. [转]PHP echo, print, printf, sprintf函数的区别和使用

    1. echo函数: 输出函数,是命令,不能返回值.echo后面可以跟很多个参数,之间用分号隔开,如: echo $myvar1; echo 1,2,$myvar,"<b>bol ...

  4. Html5实现头像上传和编辑,保存为Base64的图片过程

    一.Html5实现头像上传和编辑 插件地址: html5手机端裁剪图片上传头像代码 本地项目引入注意事项: 1.将html的js搬到外面的js文件中,便于管理 2.图片样式在html都是在页面写死,需 ...

  5. SGU 130.Circle

    答案为Catalan数C(2k, k)/(k+1) #include <stdio.h> using namespace std; int k; int main() { scanf(&q ...

  6. Sublime Text 皮肤插件安装

    安装皮肤, 举例sodahttps://github.com/buymeasoda/soda-themectrl+shift+p => Package Control: Install Pack ...

  7. 关于unitils联合dbunit的测试

    unitils据说测试的能力很强大,可测试dao,service,web层,其实对数据库的测试我更关心,看到有人展示了测试的方法,数据直接写在xls表中,很直观,然后就依照他们的方法进行试验,花费的时 ...

  8. jquery元素查找方法集锦

    jQuery常用的元素查找方法总结 $("#myELement")    选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement所以得到 ...

  9. inline-block间隔问题

    使用inline-block实现一个类似float布局效果,但是inline-block的元素间会存在“4px”的空白间距. span { display: inline-block; width: ...

  10. centos升级python到2.7

    最近在阿里云租了一个云主机,打算部署自己的个人网站,但是centos系统的默认Python是2.6版本,打算升级到2.7.3! 查看python的版本 #python  -V Python 2.6.6 ...