例如 表A: 姓名 年龄 生活习惯 地址 爱好
老李 22 XXX 1 1
小王 23 XXX 1 1
。 。 。 。 。
表B:姓名 年龄 住址 爱好 性别 状态
小C 23 XXX 1 男 1
表C: 姓名 年龄 生活习惯 地址 爱好 性别 状态 住址
怎么将A表和B表的内容放到C这个总表中 而A和B表中在总表C中未出现的字段为空值。。谢谢各位了~
老李 22 XXX 1 1
小王 23 XXX 1 1
。 。 。 。 。
表B:姓名 年龄 住址 爱好 性别 状态
小C 23 XXX 1 男 1
表C: 姓名 年龄 生活习惯 地址 爱好 性别 状态 住址
怎么将A表和B表的内容放到C这个总表中 而A和B表中在总表C中未出现的字段为空值。。谢谢各位了~
select a.姓名,a.年龄,a.生活习惯,a.地址,a.爱好,b.性别,b.状态,b.住址
from 表A as a,表B as b
where a.姓名=b.姓名;
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.姓名;
我希望表C怎么出现 。。表C:姓名 年龄 生活习惯 爱好 性别 状态 住址 地址
老李 22 XXX 1 null null null 1
小王 23 XXX 1 null null null 1
小C 23 NULL 1 男 1 XXX NULL
希望各位能给我个解决办法~~
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)
-> 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
select * from (
select 姓名,年龄,生活习惯,地址,爱好,null,null,null
from a
union all
select 姓名,年龄,null ,住址,爱好,性别,状态,null
from c) t
请楼主提供建表的 create table 语句和 准备测试数据的 insert into 语句。然后别人可以基于你的测试表和数据贴出方案。
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表中
谢谢了 ~~
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>
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