![](/img/trans.png)
[英]How to only show a subset of data in a table by using alter and select in mysql?
[英]How to insert the data of a subset table into a superset table using select statement?
我正在尝试进行动态查询,我想将数据从子集表插入到超集表中。
这是我的桌子
Table A
|---------------------|------------------|
| id | EmployeeName |
|---------------------|------------------|
| 1 | ABC1 |
|---------------------|------------------|
| 2 | ABC2 |
|---------------------|------------------|
| 3 | ABC3 |
|---------------------|------------------|
Table B
|----------------------|---------------------|------------------|
| id | empid | EmployeeName |
|----------------------|---------------------|------------------|
| | | |
|----------------------|---------------------|------------------|
| | | |
|----------------------|---------------------|------------------|
| | | |
|----------------------|---------------------|------------------|
我想将表A的数据插入表B
这是我正在尝试的查询
insert into B (select * from A);
它不起作用并向我显示两个表的列数不相等。
默认情况下, insert
语句期望提供所有目标列。 您可以通过枚举要插入的列来更改它。这是您应该坚持的好习惯,因为它使查询更易于阅读和维护。
大概,你想要:
insert into b(id, employeeName)
select id, employeeName
from a
Insert into B(id, EmployeeName) values(select * from A);
//这仅适用于未在 empid 上设置 notNull 约束。
对于这种情况,这是您可以拥有的最动态的查询。 我们提到了表 B 的列名,因为您只提供了 2 列的值。 如果您不想使用列名,那么您需要在其他表中保留剩余数据并稍微修改表 B。
Table A |---------------------|------------------| | id | EmployeeName | |---------------------|------------------| | 1 | ABC1 | |---------------------|------------------| | 2 | ABC2 | |---------------------|------------------| | 3 | ABC3 | |---------------------|------------------| Table B |----------------------|---------------------|------------------| | id | EmployeeName | empid | |----------------------|---------------------|------------------| | | | | |----------------------|---------------------|------------------| | | | | |----------------------|---------------------|------------------| | | | | |----------------------|---------------------|------------------| Table C |---------------------|------------------| | id | empid | |---------------------|------------------| | 1 | 1000 | |---------------------|------------------| | 2 | 1001 | |---------------------|------------------| | 3 | 1002 | |---------------------|------------------|
现在您可以运行查询: insert into B values(select * from A inner join C on A.id=C.id);
这将填充您的表 A。
这是对我有用的最终解决方案,因为 Id 是一个自动增量列,如果您在其中输入 null ,则没有任何变化。
插入 B(从 A 中选择 NULL,A.*);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.