若有两个人 第一个人有10个字段信息,第二个人有5个字段信息,我如何根据显示这两个人的信息,他们的信息是第二个人所拥有的字段信息呢?
注意:他们的字段是可以添加的,没跟人拥有的字段个数随时会改变。
比如:第一个人的字段信息是:
Name Alias Age Email Dept Birth Sex Role State Re
aa    qq    22  ---   1   1989  女  1     1      123
第二个人的字段信息是:
Name Alias Age Email Dept
bb    bb    23  1988  2
如何得到Name Alias Age Email Dept
        aa    qq    22  ---   1
        bb    bb    23  1988  2
因为字段信息可以随时添加随意不能写select Name,Alias, Age, Email, Dept from 表名
求助?很急 。
 

解决方案 »

  1.   

    你直接查询数据库中表的字段分别存为两个list 然后取交集之后拼接select 查询数据库中表的字段、。、select column_name,data_type from information_schema.columns 
    where table_name = '表名' 
      

  2.   

    /*创建示例表*/
    create table t1 (id int primary key identity(1,1),age int,name nvarchar(20))
    create table t2 (id int primary key identity(1,1),age int)
    insert into t1 select 19,'name1'
    insert into t2 select 20/*插入t2表的字段数据到临时表@tmptable*/
    set nocount on
    declare @tmptable table (id int primary key identity(1,1),fieldname nvarchar(50))
    insert into @tmptable select   [name]   from   syscolumns where   id   in   
    (select   id   from   sysobjects   where   xtype='u'   and   name='t2')/*循环临时表,组合字段为字符串*/
    declare @stringbuilder nvarchar(4000)
    set @stringbuilder=''
    declare @tmpid int
    declare @tmpFieldName nvarchar(50)
    declare @count int
    select @count=count(1) from @tmptable
    while @count>0
    begin
    select top 1 @tmpid=id,@tmpFieldName=fieldname from @tmptable order by id desc
    set @stringbuilder = @tmpFieldName+','+@stringbuilder
    delete from @tmptable where id=@tmpid
    set @count=@count-1
    continue
    end
    set nocount offif(len(@stringbuilder)>0)
    set @stringbuilder = substring(@stringbuilder,1,len(@stringbuilder)-1)
    --select @stringbuilder/*获取数据*/
    exec ('
    select '+@stringbuilder+' from t1 
    select '+@stringbuilder+' from t2
    ')/*删除测试表*/
    drop table t1
    drop table t2
      

  3.   


    创建一个临时表,这个临时表包含所有可能的字段,然后,将查到的数据insert至临时表,为空的字段,用null填充就好了。
      

  4.   

    Intersectstring[] str1 = { "1", "2", "3", "4", "5", "6" };
    string[] str2 = { "5", "6", "7", "8", "9", "10" };
    var intersection = str1.Intersect(str2);