INNER JOIN作为CROSS JOIN工作

时间:2014-05-06 16:17:25

标签: sql sql-server join inner-join

我有一个非常简单的场景

ID |NAME | DEPT_ID
1  |R K  | 1
2  |V K  | 1

DEPT_ID | LOC
1       | KA 
1       | VA

预期输出

 ID |NAME | DEPT_ID |LOC
 1  |R K  | 1       |KA
 2  |V K  | 1       |VA

但是,得到

ID |NAME | DEPT_ID |LOC
1  |R K  | 1       |KA
2  |V K  | 1       |VA
1  |R K  | 1       |VA
2  |V K  | 1       |KA

我使用过简单的INNER JOIN。我能得到预期的输出吗?

select ID,NAME,LOC 
from table1 
    inner join table2 on table1.dept_id=table2.dept_id

1 个答案:

答案 0 :(得分:9)

第一条记录的dept_id为1.此dept_id

有2条匹配的记录

第二条记录的dept_id为1.此dept_id

有2条匹配的记录

结果总共有4条记录。它按预期工作。

服务器无法知道KA匹配R K而不是V K

结论:不要使用非唯一字段进行连接。