右连接和内连接之间的区别

时间:2015-02-11 21:41:59

标签: sql join

我有一个表Table_1:

D1----D2
123----NULL
1a3----NULL
35s----NULL
tg45---NULL

如果我这样做:

SELECT * FROM Table_1 A
RIGHT JOIN(
  SELECT * 
  FROM Table_1 B
  WHERE
  SUBSTRING(B.D1,len(B.D1)-1,100) NOT LIKE '%[^0-9]%') C
ON A.D1=C.D1
WHERE CONVERT(INT,(SUBSTRING(A.D1,len(A.D1)-1,100)))<25;

我得到一条记录的结果:

123----NULL----123----NULL

没关系。

如果我将右连接更改为内连接,则会出现错误:

  

Msg 245,Level 16,State 1,Line 1
转换nvarchar值&#39; a3&#39;数据类型为int。

你能解释一下为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

使用RIGHT JOIN,您将获得在使用INNER JOIN时将被排除的其他值,因为它将包含“RIGHT”表中的所有记录。在这种情况下,您的子选择,别名为'C'。

其中一个附加值为a3,无法转换为整数。