sql join返回值不正确

时间:2015-09-15 22:41:33

标签: sql-server

我有以下情况

create table Ta1 (id int)
create table Ta2 (id int)

insert into Ta1 (id) values (1)
insert into Ta1 (id) values (1)

insert into Ta2 (id) values (1)
insert into Ta2 (id) values (1)
insert into Ta2 (id) values (1)
insert into Ta2 (id) values (1)

select b.id  from Ta1 a ,Ta2 b where a.id=b.id

它应该返回8行1.为什么我认为它应该只返回4行

由于 阿伦

1 个答案:

答案 0 :(得分:2)

请不要使用旧的JOIN语法。这真的很难阅读,而且我在使用该风格的公司的每次代码登记都失败了。你应该改用它:

SELECT *
FORM Ta1 a
INNER JOIN Ta2 b ON a.id = b.id

现在回答您的问题:Ta1中的每两行都匹配Ta2中的所有4行。这就是你获得2 x 4 = 8行的原因。每个版本的SQL Server都会为您提供8行。你基本上是在这两张桌子上做笛卡尔积。