现在有个test表,有一个字段nametest:
    name
    张三
    李四
    王五
      declare @num int
      declare @sql varchar(8000)
      set @num=1
      while @num <=3
           @sql ='select '+@num+',name from test'
           @num=@num+1
      end    以上SQL语句可以查出3条SQL语句
     select 1,name from test    结果是:  1   张三    1   李四
     select 2,name from test    结果是:  2   张三    2   李四
     select 3,name from test    结果是:  3   张三    3   李四
问题 如何用一条select 可以查找把三条select结果显示出来select语句结果是:
     1      张三
     1      李四
     2      张三
     2      李四
     3      张三
     3      李四
     

解决方案 »

  1.   

    select m.id , n.name from
    (select 1 id union select 2) m, tb n
      

  2.   

    declare @num int
    declare @sql varchar(8000)
    set @num=1
    while @num <=3
      begin
        set @sql =isnull(@sql+' union all ','')+'select '+ltrim(@num)+',name from test'
        set @num=@num+1
      end--print @sqlexec (@sql)
      

  3.   

    create table tb(name varchar(10))
    insert into tb values('张三')
    insert into tb values('李四')
    insert into tb values('王五')
    goselect m.id , n.name from
    (select 1 id union select 2 union select 3) m, tb n 
    where n.name <> '王五'drop table tb/*
    id          name       
    ----------- ---------- 
    1           张三
    1           李四
    2           张三
    2           李四
    3           张三
    3           李四(所影响的行数为 6 行)
    */
      

  4.   

    如何在不insert into 一个表的情况下
      

  5.   

    这样就可以不用创建表,也就不用insert into 表了.
    select * from (select '张三' as [name] union all select '李四' union all select '王五') as test