SQL语句 自连表查询。inner join用法

use mydb1
go
-- 表T_Employee2
-- Id  Name  Position  Dept
-- 1   张三   员工     市场部
-- 2   李四   经理     销售部
-- 3   王五   经理     市场部
-- 4   马六   员工     销售部
-- 5   钱七   员工     市场部
select * from T_Employee2

-- 需求:查询表中所有员工以及所在部门的经理姓名。(使用表自连接查询)

-- 分析:要求返回结果
-- Name  Position  Dept  经理
-- 张三  员工    市场部  王五
-- 马六  员工    销售部  李四
-- 钱七  员工    市场部  王五

-- 1、查出 每个部门对应的经理姓名
select Dept,Name from T_Employee2 where Position=‘经理‘
-- 结果:
-- Dept    Name
-- 销售部  李四
-- 市场部  王五

-- 2、查出 所有的员工
select * from T_Employee2 where Position=‘员工‘
-- 结果:
-- Id  Name  Position  Dept
-- 1   张三   员工     市场部
-- 4   马六   员工     销售部
-- 5   钱七   员工     市场部

--3、上面2个表连接查询,把1个表当做2个表来查询。
select t1.Name,Position,t1.Dept,t2.Name ‘经理‘ from
(select * from T_Employee2 where Position=‘员工‘) as t1
inner join (select Dept,Name from T_Employee2 where Position=‘经理‘)as t2 on t1.Dept = t2.Dept

--4、简化后结果
select t1.Name,Position,t1.Dept,t2.Name ‘经理‘ from T_Employee2
as t1
inner join (select Dept,Name from T_Employee2 where Position=‘经理‘)as t2 on t1.Dept = t2.Dept
where t1.Position=‘员工‘

-- 结果:
-- Name  Position  Dept  经理
-- 张三  员工    市场部  王五
-- 马六  员工    销售部  李四
-- 钱七  员工    市场部  王五
时间: 2024-10-13 10:43:25

SQL语句 自连表查询。inner join用法的相关文章

Orancle的SQL语句的多表查询和组函数

Orancle的SQL语句的多表查询和组函数一.SQL的多表查询:1.左连接和右连接(不重要一方加(+))SELECT e.empno,e.ename,d.deptno,d.dname,d.loc FROM emp e,dept d WHERE e.deptno(+)=d.deptno ;(+)在等号左边是右连接,反之左连接.2.交叉连接 (CROSS JOIN产生笛卡尔积)SELECT FROM emp CROSS JOIN dept ;3.自然连接 (NATURAL JOIN)自动关联字段匹

sql server 的多表查询(left join )

今天写了一个sql 弄了三遍才算成功,是以前写sq自己l从来没有注意过得,left join DECLARE @SendIntervalDays INT ,@OrderIntervalDays INT ,@OrderDate DATETIME SET @SendIntervalDays=7      --短信发送间隔天数 SET @OrderIntervalDays=30    --订单已签收天数 SET @OrderDate='2014-12-12'  --订单时间 SELECT O.User

sql语句之单表查询

语法顺序: select distinct 字段1,字段2,字段3 from 库.表 where 条件 group by 分组条件 having 过滤 # 执行顺序的话,到这步会返回运行select语句,之后再运行order by order by 排序字段 limit   n: # 限制打印到屏幕上的条数 where 须在group by之前,不可用聚合函数 hanving需在group by之后,可用聚合函数 select 后面可以用聚合函数,如select count(id) from e

SQL语句对于多表联合查询重复字段的特殊语法处理

SQL语句对于多表联合查询重复字段的特殊语法处理 原创 2016年01月13日 14:22:36 5309 [sql] view plain copy SELECT m.*,d_name,r_name,m2.m_account as shangji_account FROM Member m,Member m2,Role r,Depart d WHERE m.m_rid=r.id and m.m_did=d.id and m.m_shangji=m2.id ORDER BY m.id DESC

SQL语句之 多表管理

SQL语句之 多表管理 一个数据库内通常会有不止一张表,有时候我们要把多张表联系起来,这就需要用到多表管理的语句. 1.外键约束 一个表中的非主键字段,如果在另外一张表中是主键,那么这个字段我们叫它做外键. 例如,现在有两个表: 学生表 - 学号,姓名,性别,所在班级号 班级表 - 班级号,班级人数 在学生表中,学号是主键:在班级表中,班级号是主键,而学生表中‘所在班级号’是非主键.所以,所在班级号对学生表来说是一个外键. 语句:CONSTRAINT student_class_fk FOREI

如何从页面SQL语句进行相关后台查询

前几天刚刚做了一个页面书写sql语句,到后台查询相关结果的案例,给大家分享一下.有不足之处请大家多指教!!! 一.页面:因为查询的表不固定,所以表格需要自助生成(这是利用了"jqGrid") 若是不利用"jqGrid"也可以参考方法2. 方法1. <div> <nobr> <div> <form method="get" action="/management/transactionFlow/i

SQL语句关于时间的查询小心得,希望大家给点意见

查询本月信息:Select * FROM T_Users Where datediff(month,RegisterTime,getdate())=0 昨天的信息:SELECT * FROM T_Users where LastLoginTime>DATEADD(DAY,-2,GETDATE()) AND LastLoginTime<GETDATE() SELECT SUM([DetailMoney]) FROM [dbo].[T_BuyDetails] INNER JOIN [dbo].[T

hibernate中使用sql语句进行表链接查询,对结果集的遍历方法

今天做了一个在hibernate中使用sql语句进行表链接查询的功能,得到的属性是来自两个表中的字段.下面对结果集遍历的方法进行记录. sql语句不写了.部分代码如下: List<Course_Material> list = new ArrayList<Course_Material>(); @SuppressWarnings("rawtypes") List accountList = query.list(); if(accountList.size()&

通过带参数的Sql语句来实现模糊查询(多条件查询)

#region 通过带参数的Sql语句来实现模糊查询(多条件查询) StringBuilder sb = new StringBuilder("select * from books"); List<string> listWheres = new List<string>(); List<SqlParameter> listParams = new List<SqlParameter>(); if (txtBookName.Text.T