原始表
id name1 name2
a john jack
g lulu smith
要求结果是id name
a john
a jack
g lulu
g smith

解决方案 »

  1.   

    select id , name = name1 from tb
    union all
    select id , name = name2 from tb
    order by id , name
      

  2.   

    --> 测试数据:[tb]
    if object_id('[tb]') is not null drop table [tb]
    create table [tb]([id] varchar(1),[name1] varchar(4),[name2] varchar(5))
    insert [tb]
    select 'a','john','jack' union all
    select 'g','lulu','smith'select [id],[name1] as name from [tb]
    union
    select [id],[name2] as name from [tb]-----------------
    a jack
    a john
    g lulu
    g smith
      

  3.   

    create table tb(id varchar(10),   name1 varchar(10),   name2 varchar(10))
    insert into tb values('a' ,   'john' ,   'jack')
    insert into tb values('g' ,   'lulu' ,   'smith')
    GOselect id , name = name1 from tb
    union all
    select id , name = name2 from tb
    order by id , name
    drop table tb/*
    id         name       
    ---------- ---------- 
    a          jack
    a          john
    g          lulu
    g          smith(所影响的行数为 4 行)
    */
      

  4.   

    select [id],[name1] as name from [tb]
    union
    select [id],[name2] as name from [tb]
      

  5.   

    select id , name = name1 from tb 
    union all 
    select id , name = name2 from tb 
    order by id