mysql - 将某些字段(仅结构)从另一个表复制到现有表中

标签 mysql sql

我在最新版本的 XAMPP 上使用最新版本的 MariaDB。 PHPmyadmin 可用。

<小时/>

假设我精心创建了一个包含大量字段的大表。我们称之为grand_table。我选择了有用的字段名称,为不同类型的数据设置了适当的数据类型。

我想使用 grand_table 作为现成字段的来源,以便添加字段到 future 的表中。 (例如,如果我需要向现有表添加电子邮件字段,我不想考虑数据类型等,我只想从 grand_table 复制电子邮件字段。这样我就可以减少思考,也减少粗手指打字错误)。

假设我有另一个表,其中有一些字段。我们称之为 fresh_table

我只想仅将 20 个字段的结构(即字段名称、数据类型等)grand_table 复制到 fresh_table。我不想复制任何数据(grand_table 中实际上没有任何数据)。

这两个表之间没有任何公共(public)字段。因此,没有通用的 id 字段(我认为这并不重要,因为我不关心在这里导入数据)。

<小时/>

我知道可以使用以下方法添加字段到现有表中:

ALTER TABLE `fresh_table` ADD field1 VARCHAR(60), 
field2 VARCHAR(60), field2 VARCHAR(60), 
etc... ;

我还知道可以使用现有表中的字段创建新表:

CREATE TABLE animals2 AS 
SELECT animal                -- only the columns you want
FROM animals 
WHERE FALSE;                 -- and no data  
<小时/>

我的问题是:是否可以将 ALTERSELECT .. FROM 组合起来添加 字段(仅结构,无数据)从另一个现有表复制到现有表?如果没有,是否有其他方法可以实现相同的目标?

最佳答案

Alter + select ... from 对于现有表不起作用。解决方法如下:

create table large_table (id int, firstname varchar(20), lastname varchar(20), age int);
create table fresh_table (field1 int, field2 int);
create table new_table as select id, firstname, field1, field2 from large_table, fresh_table where 1=0;
select * from new_table;

这将为您提供 fresh_table 和 large_table 中的列。然后,您可以删除 fresh_table 并将 new_table 重命名为 fresh_table。

关于mysql - 将某些字段(仅结构)从另一个表复制到现有表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34386289/

相关文章:

java - 使用准备好的语句为 JQuery JTable 选择值

php - 使用 PHP 将 MySQL 查询转换为 JSON

php - 创建 Like 函数 php mysql ajax

sql - Postgres 中没有子查询的总计算百分比

mysql - 将 SQL 查询从 MYSQL 导入到 Ms Access

mysql - 我的 Drupal 站点出现问题

mysql - 如何在 MySQL 中为 "location"存储 "event"

sql - 使用 Left 和 char 索引返回无效参数

mysql - 在 activerecord 中可能使用连接将两个 SQL 查询减少为一个

sql - 从字符串中修剪整数