但不知道两张表的字段名称和类型.
---这个你select * from a
select * from b不就可以看到他们的字段名称吗?你要查找类型,
select column_name,data_type from information_schema.columns
where table_name = 'a' or table_name = 'b'就可以知道他们的名称类型你先看看结构再找方法,我们都不知道你的表结构,也不好给你建议!
不过这个问题的解答,很多旧帖子就问过啦
找关于重复纪录即可得到解答

解决方案 »

  1.   

    declare @sql varchar(8000),@col varchar(10)
    select @sql=isnull(@sql,'')+' and A.['+name+']=B.['+name+']',
           @col=name 
    from syscolumns where id=object_id('A')
    select @sql='select B.* from B left join A on '+stuff(@sql,1,4,'')+' where A.['+@col+'] is null'
    exec(@sql)
      

  2.   

    --创建测试环境
    create table A
    (
      ID int,
      Name varchar(10)
    )
    create table B
    (
      ID int,
      Name varchar(10)
    )
    insert A
    select 1,'AAA' union
    select 2,'BBB'
    insert B
    select 1,'AAA' union
    select 2,'BBB' union
    select 3,'CCC' union
    select 4,'DDD'--测试
    declare @sql varchar(1000),@col varchar(10)
    select @sql=isnull(@sql,'')+' and A.['+name+']=B.['+name+']',
           @col=name 
    from syscolumns where id=object_id('A')
    select @sql='select B.* from B left join A on '+stuff(@sql,1,4,'')+' where A.['+@col+'] is null'
    exec(@sql)--删除测试环境
    drop table A,B--结果
    /*
    ID          Name       
    ----------- ---------- 
    3.00        CCC
    4.00        DDD
    */