刚学到sql的select语 sql提供了多表查询的功能 是用join。。。on。。。实现的
但我自己试了一下 不用join。。。on。。。 也可以在多个表中查询出想要的结果啊
我想知道用普通的 select。。from。。。where。。。和select。。。from。。join。。on。。。这样 有什么不同
------解决方案--------------------
/*
包括部门,姓名,出勤天数,迟到次数,早退次数,矿工次数 这些数据
*/
go
if OBJECT_ID('dept') is not null
drop table dept
go
create table dept(
deptid varchar(5),
deptname varchar(20)
)
go
if OBJECT_ID('emp') is not null
drop table emp
go
create table emp(
empid varchar(10),
empname varchar(20),
empsex varchar(5) check(empsex in('men','women')),
empage int,
birthday datetime,
addr varchar(50),
tel varchar(12),
deptid varchar(5)
)
go
if OBJECT_ID('kaoqin') is not null
drop table kaoqin
go
create table kaoqin(
empid varchar(10),
deptid varchar(5),
出勤天数 int,
迟到次数 int,
早退次数 int,
矿工次数 int
)
--包括部门,姓名,出勤天数,迟到次数,早退次数,矿工次数
select
dept.deptname as 部门,emp.empname as 姓名,
出勤天数,迟到次数,早退次数,矿工次数
from emp
inner join dept on emp.deptid=dept.deptid
inner join kaoqin on emp.empid=kaoqin.empid
/*
包括部门 姓名 出勤天数 迟到次数 早退次数 矿工次数
*/
------解决方案--------------------
- SQL code
declare @t table (id int,col varchar(1))insert into @tselect 1,'a' union allselect 2,'b' UNION ALLSELECT 3,'c'declare @m table (id int,col varchar(1))insert into @mselect 1,'a' union allselect 2,'b'select * from @t a left join @m b on a.id=b.id/*id col id col----------- ---- ----------- ----1 a 1 a2 b 2 b3 c NULL NULL*/select * from @t a left join @m b on 1=1 WHERE a.id=b.id/*id col id col----------- ---- ----------- ----1 a 1 a2 b 2 b*/--相当于内连接select * from @t a ,@m b WHERE a.id=b.id/*----------- ---- ----------- ----1 a 1 a2 b 2 b*/