inner join、join区别

sgliuzhijie 2009-09-03 04:46:33
表 usr
ID ZIDUAN1 ZIDUAN2 BIANHAO
1 NULL NULL 11
2 NULL NULL 11
3 NULL NULL 12
4 NULL NULL 13
5 NULL NULL 12
6 NULL NULL 14
7 NULL NULL 17


SELECT A.* FROM USR A
JOIN USR B ON A.BIANHAO=B.BIANHAO

SELECT A.* FROM USR A
inner JOIN USR B ON A.BIANHAO=B.BIANHAO
执行结果一样

结果如下
ID ZIDUAN1 ZIDUAN2 BIANHAO
1 NULL NULL 11
2 NULL NULL 11
1 NULL NULL 11
2 NULL NULL 11
3 NULL NULL 12
5 NULL NULL 12
4 NULL NULL 13 A.BIANHAO=B.BIANHAO 为什么还会出现 ??
3 NULL NULL 12
5 NULL NULL 12
6 NULL NULL 14 为什么还会出现
7 NULL NULL 17 为什么还会出现


为什么不是只显示 有BIANHAO重复的行呢?
inner join 和 join 有什么区别么?
SELECT A.* FROM USR A
JOIN USR B ON A.BIANHAO=B.BIANHAO
AND A.ID<>B.ID
结果如下:

ID ZIDUAN1 ZIDUAN2 BIANHAO
2 NULL NULL 11
1 NULL NULL 11
5 NULL NULL 12
3 NULL NULL 12

这是我想要的结果

如果这个表没有ID这个字段 我怎么得到下面这个结果
ID ZIDUAN1 ZIDUAN2 BIANHAO
2 NULL NULL 11
1 NULL NULL 11
5 NULL NULL 12
3 NULL NULL 12
...全文
2838 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
auvmonkey 2011-03-15
  • 打赏
  • 举报
回复
巩固了
tasolla 2011-03-14
  • 打赏
  • 举报
回复
FROM join_table join_type join_table 2 [ON (join_condition)]

join_type 是inner join left outer join……之类

普通的查询方式默认为内联接的,

inner join偷懒写成join,所以我想就是这个原因
yan19861206 2010-10-11
  • 打赏
  • 举报
回复
学习了
t240034137 2009-09-03
  • 打赏
  • 举报
回复
join和inner join一样 你去看SQL联机丛书吧 上面有解释的!
kkcool 2009-09-03
  • 打赏
  • 举报
回复
T-sql主要有两种连接:内连接和外连接。join和inner join一样,表示内连接

内连接只返回满足连接条件的数据;而不返回不匹配的行。
而外连接出了返回匹配的行以外,还允许返回不匹配的行。

其中外连接又分:左外,右外,完全外连接。
htl258_Tony 2009-09-03
  • 打赏
  • 举报
回复
--> 生成测试数据表:tb

If not object_id('[tb]') is null
Drop table [tb]
Go
Create table [tb]([CODE] int)
Insert [tb]
Select 11 union all
Select 11 union all
Select 11 union all
Select 12 union all
Select 13 union all
Select 12 union all
Select 15
Go
--Select * from [tb]

-->SQL查询如下:
select *
from tb t
where exists(
select 1
from tb
where [CODE]=t.[CODE]
group by [CODE]
having count(1)>1)
/*
CODE
11
11
11
12
12
*/
sgliuzhijie 2009-09-03
  • 打赏
  • 举报
回复
一个表 USR (CODE INT)
CODE
11
11
11
12
13
12
15


实现结果为
code
11
11
11
12
12


黄_瓜 2009-09-03
  • 打赏
  • 举报
回复
对比
黄_瓜 2009-09-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sgliuzhijie 的回复:]
select a.id,a.va,b.id,b.va from @ta a,@ta b where a.id=b.id+1
a.id=b.id+1 是什么意思?为什么要这么写呢?
[/Quote]
select a.id,a.va,b.id,b.va from @ta a,@ta b

select a.id,a.va,b.id,b.va from @ta a,@ta b where a.id=b.id+1
a.id=b.id+1

对不着看就明白了
sgliuzhijie 2009-09-03
  • 打赏
  • 举报
回复
select a.id,a.va,b.id,b.va from @ta a,@ta b where a.id=b.id+1
a.id=b.id+1 是什么意思?为什么要这么写呢?
  • 打赏
  • 举报
回复
join 是 inner join 简写
guguda2008 2009-09-03
  • 打赏
  • 举报
回复
INNER JOIN = JOIN
只是写法不一样
SQL77 2009-09-03
  • 打赏
  • 举报
回复
JOIN ,INNER JOIN 是一样的
feixianxxx 2009-09-03
  • 打赏
  • 举报
回复
INNER JOIN 和outer join 是不一样的。。看1楼的代码
feixianxxx 2009-09-03
  • 打赏
  • 举报
回复
INNER JOIN JOIN 是一样的。。
INNER JOIN 可以写成JOIN
htl258_Tony 2009-09-03
  • 打赏
  • 举报
回复
SQL 几种JOIN用法实例 
declare @ta table (id int,va varchar(10))
declare @tb table (id int,vb varchar(10))

insert into @ta select 1,'aa'
insert into @ta select 2,'bc'
insert into @ta select 3,'ccc'

insert into @tb select 1,'2'
insert into @tb select 3,'58'
insert into @tb select 4,'67'

--内连接简单写法

select a.id,a.va,b.id,b.vb from @ta a,@tb b
where a.id=b.id

--内连接

select a.id,a.va,b.id,b.vb from @ta a inner join @tb b
on a.id=b.id

select a.id,a.va,b.id,b.vb from @ta a join @tb b
on a.id=b.id

--左连接(左外连接)
--返回left join 子句中指定的左表的所有行,以及右表所匹配的行。

select a.id,a.va,b.id,b.vb from @ta a left join @tb b
on a.id=b.id

select a.id,a.va,b.id,b.vb from @ta a left outer join @tb b
on a.id=b.id

--右连接(右外连接)
--返回right join 子句中指定的右表的所有行,以及左表所匹配的行。

select a.id,a.va,b.id,b.vb from @ta a right join @tb b
on a.id=b.id

select a.id,a.va,b.id,b.vb from @ta a right outer join @tb b
on a.id=b.id

--完整外连接
--等同左连接+右连接

select a.id,a.va,b.id,b.vb from @ta a full join @tb b
on a.id=b.id

select a.id,a.va,b.id,b.vb from @ta a full outer join @tb b
on a.id=b.id


--交叉连接
--没有两个表之间关系的交叉连接,将产生连接所涉及的表的笛卡尔积。

select a.id,a.va,b.id,b.vb from @ta a cross join @tb b

select a.id,a.va,b.id,b.vb from @ta a,@tb b

--自连接
--一个表和其本身连接。

select a.id,a.va,b.id,b.va from @ta a,@ta b where a.id=b.id+1

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧