INNER JOIN作为CROSS JOIN工作

Rav*_*avi 2 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
Run Code Online (Sandbox Code Playgroud)

预期产出

 ID |NAME | DEPT_ID |LOC
 1  |R K  | 1       |KA
 2  |V K  | 1       |VA
Run Code Online (Sandbox Code Playgroud)

但是,越来越

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
Run Code Online (Sandbox Code Playgroud)

我用过简单的INNER JOIN.我可以得到我预期的输出?

select ID,NAME,LOC 
from table1 
    inner join table2 on table1.dept_id=table2.dept_id
Run Code Online (Sandbox Code Playgroud)

Max*_*sky 9

第一条记录的dept_id为1.这个dept_id有2条匹配的记录

第二条记录的dept_id为1.此dept_id有2条匹配的记录

所以结果总共有4条记录.它按预期工作.

服务器无法知道KA匹配R K与否V K

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