Table A
a1 NVRCHAR(10),
a2 NVRCHAR(10),
a3 NVRCHAR(10)Table B
b1 NVRCHAR(10),
b2 NVRCHAR(10),
b3 NVRCHAR(10)SELECT *
FROM A
INNER JOIN B
ON A.a1 = '1'
WHERE B.b1 = '2'今天看到别人写的这个SQL,这是什么用意呢
结果是笛卡尔积吗?

解决方案 »

  1.   


    --> 测试数据: @TableA
    declare @TableA table (a1 int,a2 int,a3 varchar(1))
    insert into @TableA
    select 1,2,'a' union all
    select 1,3,'b' union all
    select 2,2,'c' union all
    select 2,3,'d' union all
    select 3,1,'e' union all
    select 3,3,'f'--> 测试数据: @TableB
    declare @TableB table (b1 int,b2 int,b3 varchar(1))
    insert into @TableB
    select 1,2,'a' union all
    select 1,3,'b' union all
    select 2,2,'c' union all
    select 2,3,'d' union all
    select 3,1,'e' union all
    select 3,3,'f'select * from @TableA a inner join @TableB b
    on a.a1='1' where b.b1='2'
    /*
    a1          a2          a3   b1          b2          b3
    ----------- ----------- ---- ----------- ----------- ----
    1           2           a    2           2           c
    1           3           b    2           2           c
    1           2           a    2           3           d
    1           3           b    2           3           d
    */
    你看一下结果就明白了
      

  2.   

    就相当于把A表中a.a1='1' 和 B表中 b.b1='2'的记录做了笛卡尔积.