select sum(money) from table1取出来的值和
select sum(a.money) from table1 as a left join table2 as b取出来的值不一样
table1和table2的关系是一对多..

解决方案 »

  1.   

    select * from table1 a left join table2 b on a.id=b.id--联查需要条件的。
      

  2.   

    CREATE TABLE #temp
    (
    id INT,
    [money] INT
    )
    INSERT #temp
    SELECT 1, 10
    CREATE TABLE #temp2
    (
    id INT
    )
    INSERT #temp2
    SELECT 1 UNION ALL
    SELECT 1 UNION ALL
    SELECT 2
    GO
    --SQL:
    SELECT SUM([money]) FROM #tempSELECT
    SUM(a.[money])
    FROM #temp a 
    LEFT JOIN #temp2 b
    ON a.id = b.id
    --注意:如果b表有多条记录对应a表,就会发生你据说的那种情况.
      

  3.   

    肯定不一样了,第二种查询方法是左外联接,以table1的字段去匹配table2的字段。
      

  4.   

     一对多关系
     from table1 行数跟  from table1 as a left join table2 as b 取出来的行数
     是不一样的,当然 sum 起来就不一样
      

  5.   

    楼上说的都对,一对多的化,在第二句
    select sum(a.money) from table1 as a left join table2 as b
    相当于原先table1一条记录的a.money对应table2多个,
    也就是同一个table1.money可能出现多次,那么相加后的值肯定大于第一种的sum,
    所以第二种是错的,要和第一种机同的化,必须使table2和table1是一对一的对应,
    如table2先group by 那个连接条件的字段后,再与table1对应
      

  6.   

    加上了 LFFT JOIN
    形成了左连接 就会是一对多的关系了