2张表 A表
id name
1 张三
B表
id name
1 李四把两张表合成一张表
sql语句为:select * from (select * from a union all select * from b)id name
1 张三
1 李四在不改变表结构的情况下多出1列(类型)
a表的类型为IP  b表的类型为ATMid name type
1 张三 IP
1 李四 ATM
多出来的这列怎么解决,前提是不改变表结构
有人告诉我每张表都有一个伪列rownum
不知道怎么用!!!
求大神解答

解决方案 »

  1.   


    select a.*,'IP' as type from a union all select b.*,'ATM' as type from b
      

  2.   

    +1
    or
    SELECT   *
      FROM   (SELECT   id, name, TYPE FROM a
              UNION ALL
              SELECT   id, name, TYPE FROM b)
      

  3.   

    SELECT   *
      FROM   (SELECT   id, name, 'IP' TYPE FROM a
              UNION ALL
              SELECT   id, name, 'ATM' TYPE FROM b)
      

  4.   

    select id , name , 'IP列名' type from a
    union all
    select id , name , 'ATM列名' type from b
      

  5.   

    实测数据CREATE TABLE T59
    (
        ID NUMBER(4),
        NAME VARCHAR2(20)
    );
    INSERT INTO T59 VALUES(1, '张三');
    CREATE TABLE T60
    (
        ID NUMBER(4),
        NAME VARCHAR2(20)
    );
    INSERT INTO T60 VALUES(2, '李四');
    实测结果:
      

  6.   

    select id , name , 'IP' type from a
    union all
    select id , name , 'ATM' type from b
      

  7.   

    直接union all 就可以了吧
      

  8.   

    直接union all 后面查询的对应字段名显示会根据第一个语句的字段来select id,name,IP type from a
    union all
    select id,name,ATM from b