我有以下情况
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行
由于 阿伦
答案 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行。你基本上是在这两张桌子上做笛卡尔积。