例如 表A: 姓名 年龄 生活习惯 地址 爱好
           老李  22   XXX       1   1
           小王  23   XXX       1   1
             。  。    。       。  。 
     表B:姓名  年龄 住址  爱好 性别 状态 
           小C   23   XXX    1   男    1
      
     表C: 姓名 年龄 生活习惯 地址 爱好 性别 状态 住址
怎么将A表和B表的内容放到C这个总表中 而A和B表中在总表C中未出现的字段为空值。。谢谢各位了~

解决方案 »

  1.   

    insert into 表C(姓名,年龄,生活习惯,地址,爱好,性别,状态,住址)
    select a.姓名,a.年龄,a.生活习惯,a.地址,a.爱好,b.性别,b.状态,b.住址
    from 表A as a,表B as b
    where a.姓名=b.姓名;
      

  2.   

    表A和表B的内容会全部出现在表C中? 那表A的性别会不会为空值?
      

  3.   

    你要AB表的全部出现在C表啊?
    insert into 表C(姓名,年龄,生活习惯,地址,爱好,性别,状态,住址)
    select a.姓名,a.年龄,a.生活习惯,a.地址,a.爱好,b.性别,b.状态,b.住址
    from 表A as a left join 表B as b on a.姓名=b.姓名
    union
    select a.姓名,a.年龄,a.生活习惯,a.地址,a.爱好,b.性别,b.状态,b.住址
    from 表A as a right join 表B as b on a.姓名=b.姓名;
      

  4.   

    是的 
    我希望表C怎么出现 。。表C:姓名 年龄 生活习惯 爱好 性别   状态   住址    地址
              老李  22  XXX     1   null  null  null    1
             小王  23  XXX     1   null  null  null    1
             小C  23   NULL    1   男     1     XXX    NULL
       希望各位能给我个解决办法~~
      

  5.   


    mysql> select * from a;
    +------+------+-------+---------+----------+
    | name | age  | habit | address | interset |
    +------+------+-------+---------+----------+
    | 老李 |   22 | xxx   | 1       | 1        |
    | 小王 |   23 | xxx   | 1       | 1        |
    +------+------+-------+---------+----------+
    2 rows in set (0.00 sec)mysql> select * from b;
    +------+------+---------+----------+------+--------+
    | name | age  | address | interset | sex  | status |
    +------+------+---------+----------+------+--------+
    | 小C  |   23 | xxx     | 1        |    0 |      1 |
    +------+------+---------+----------+------+--------+
    1 row in set (0.00 sec)mysql> select * from c;
    Empty set (0.00 sec)mysql> insert into c
        ->  select a.name,a.age,a.habit,a.address,a.interset,b.sex,
        -> b.status,b.address
        -> from a left join b
        -> on a.name=b.name;
    Query OK, 2 rows affected (0.03 sec)
    Records: 2  Duplicates: 0  Warnings: 0mysql> select * from c;
    +------+------+-------+---------+----------+------+--------+-------+
    | name | age  | habit | address | interset | sex  | status | place |
    +------+------+-------+---------+----------+------+--------+-------+
    | 老李 |   22 | xxx   | 1       | 1        | NULL |   NULL | NULL  |
    | 小王 |   23 | xxx   | 1       | 1        | NULL |   NULL | NULL  |
    +------+------+-------+---------+----------+------+--------+-------+
    2 rows in set (0.00 sec)
      

  6.   

    楼上的没有把小C插进去insert into c
        ->  select a.name,a.age,a.habit,a.address,a.interset,b.sex,
        -> b.status,b.address
        -> from a left join b
        -> on 1=1
      

  7.   

    insert into c (姓名,年龄,生活习惯,地址,爱好,性别,状态,住址)
    select * from (
       select      姓名,年龄,生活习惯,地址,爱好,null,null,null
       from a
       union all
       select      姓名,年龄,null    ,住址,爱好,性别,状态,null
       from c) t
      

  8.   


    请楼主提供建表的 create table 语句和 准备测试数据的 insert into 语句。然后别人可以基于你的测试表和数据贴出方案。
      

  9.   

    create table a(
    name varchar(20),
    addr varchar(255),
    zip char(6),
    tel varchar(20),
    num int);create table b(
    name varchar(20),
    addr varchar(255),
    num int,
    color char(5),
    habit varchar(10));create table c(
    name varchar(20),
    addr varchar(255),
    num int,
    color char(5),
    licNum int,
    time date);这3张表的内容分别来自不同的txt数据 最后希望它能合起来建立个新表d包含以上表的全部内容 要求:a表中没有b和c表的字段内容为null,b表中没有a和c表的字段内容为null c表中没有b和a的字段内容为nulla,b,c 3个表里面的内容全部在d表中
    谢谢了 ~~
      

  10.   

    insert into c(name,addr,num,color,licNum,time)
           select name,addr,null,null,null  ,null from a
           union all
           select name,addr,num,color,null  ,null from b;由于你没有提供数据,所以仅用你提供的空表做了测试如下。mysql> create table a(
        -> name varchar(20),
        -> addr varchar(255),
        -> zip char(6),
        -> tel varchar(20),
        -> num int);
    Query OK, 0 rows affected (0.14 sec)mysql>
    mysql> create table b(
        -> name varchar(20),
        -> addr varchar(255),
        -> num int,
        -> color char(5),
        -> habit varchar(10));
    Query OK, 0 rows affected (0.08 sec)mysql>
    mysql> create table c(
        -> name varchar(20),
        -> addr varchar(255),
        -> num int,
        -> color char(5),
        -> licNum int,
        -> time date);
    Query OK, 0 rows affected (0.09 sec)mysql>mysql> desc a;
    +-------+--------------+------+-----+---------+-------+
    | Field | Type         | Null | Key | Default | Extra |
    +-------+--------------+------+-----+---------+-------+
    | name  | varchar(20)  | YES  |     | NULL    |       |
    | addr  | varchar(255) | YES  |     | NULL    |       |
    | zip   | char(6)      | YES  |     | NULL    |       |
    | tel   | varchar(20)  | YES  |     | NULL    |       |
    | num   | int(11)      | YES  |     | NULL    |       |
    +-------+--------------+------+-----+---------+-------+
    5 rows in set (0.05 sec)mysql> desc b;
    +-------+--------------+------+-----+---------+-------+
    | Field | Type         | Null | Key | Default | Extra |
    +-------+--------------+------+-----+---------+-------+
    | name  | varchar(20)  | YES  |     | NULL    |       |
    | addr  | varchar(255) | YES  |     | NULL    |       |
    | num   | int(11)      | YES  |     | NULL    |       |
    | color | char(5)      | YES  |     | NULL    |       |
    | habit | varchar(10)  | YES  |     | NULL    |       |
    +-------+--------------+------+-----+---------+-------+
    5 rows in set (0.00 sec)mysql> desc c;
    +--------+--------------+------+-----+---------+-------+
    | Field  | Type         | Null | Key | Default | Extra |
    +--------+--------------+------+-----+---------+-------+
    | name   | varchar(20)  | YES  |     | NULL    |       |
    | addr   | varchar(255) | YES  |     | NULL    |       |
    | num    | int(11)      | YES  |     | NULL    |       |
    | color  | char(5)      | YES  |     | NULL    |       |
    | licNum | int(11)      | YES  |     | NULL    |       |
    | time   | date         | YES  |     | NULL    |       |
    +--------+--------------+------+-----+---------+-------+
    6 rows in set (0.00 sec)mysql> insert into c(name,addr,num,color,licNum,time)
        ->        select name,addr,null,null,null  ,null from a
        ->        union all
        ->        select name,addr,num,color,null  ,null from b;
    Query OK, 0 rows affected (0.00 sec)
    Records: 0  Duplicates: 0  Warnings: 0mysql>
      

  11.   

    我说的是d表包括a,b,c表 楼上的朋友你理解成2个表加到第三个表去了 d表里面什么数据都没
      

  12.   

    我觉得这样做似乎也有问题,当a表和b表中都存在一个名字相同的人的话,楼主的意思应该是把这两条数据合并成一条数据,我的那条语句不知道为什么,把left join改成 full join 就不行。
      

  13.   


    select name,addr,null,null,null  ,null,zip,tel from a  
    union all                                      
    select name,addr,num,color,null  ,null,null,null from b
    union all
    select name,addr,num,color,licNum,time,null,null from c