在创建新表时插入另一个表中的值

Posted

技术标签:

【中文标题】在创建新表时插入另一个表中的值【英文标题】:Inserting the values from another table while creating new table 【发布时间】:2013-02-22 09:55:20 【问题描述】:

这是我的FIDDLE

我正在尝试将数据从旧表导入到新表。在旧表中有很多没有重复。在新表中,我只能插入 DISTINCT 电子邮件。我无法插入相同的名称。这是我的代码。

CREATE TABLE table_old(name VARCHAR(255), email VARCHAR(255));

INSERT INTO table_old (name, email) VALUES ('tom', 'tom@gmail.com'),
                                           ('peter', 'peter@gmail.com'),
                                           ('hitler', 'hitler@gmail.com'),
                                           ('haasan', 'haasan@gmail.com'),
                                           ('arun', 'arun@gmail.com'),
                                           ('tom', 'tom@gmail.com'),
                                           ('peter', 'peter@gmail.com'),
                                           ('hitler', 'hitler@gmail.com'),
                                           ('haasan', 'haasan@gmail.com'),
                                           ('arun', 'arun@gmail.com');

CREATE TABLE table_new AS (SELECT DISTINCT email FROM table_old );

所以请告诉我如何在 table_new 中插入与电子邮件列名称相关的名称。

【问题讨论】:

只是添加名称? CREATE TABLE table_new AS (SELECT DISTINCT name, email FROM table_old ); 我将此解释为只需要一份副本,即使名称不同。 是的,乔。你说的对。我只需要冗余内容的副本。虽然你是对的,但 tim 更快地解决了我的问题。 首先,我使用 user_id 和 auto inc 和主键创建了表。后来我尝试使用 alter table 命令进行上述查询。我收到错误。我不能那样做吗? 【参考方案1】:

我想这就是你所追求的:

CREATE TABLE table_new AS (SELECT name, email FROM table_old GROUP BY name, email);

【讨论】:

首先,我使用 user_id 和 auto inc 和主键创建了表。后来我尝试使用 alter table 命令进行上述查询。我收到错误。我不能那样做吗?【参考方案2】:

您可以使用以下查询。

CREATE TABLE table_new AS (SELECT DISTINCT * FROM table_old );

【讨论】:

【参考方案3】:

其中一些取决于您希望如何选择保留的名称。这可能很简单:

CREATE TABLE table_new AS (SELECT email, max(name) FROM table_old group by email);

如果您有更复杂的规则来确定选择哪个名称,则需要以不同的方式实施。

【讨论】:

以上是关于在创建新表时插入另一个表中的值的主要内容,如果未能解决你的问题,请参考以下文章

插入行并增加字段中的值

(Sqlserver)将在查询结果插入新表中的时候添加一个自动增长列么 SQL语句怎么写

插入数据库表中一条记录同时也插入另一个表中的SQL语句怎么写

如何比较两个表的列并将值插入到基于 SQL Server 中存储过程中的比较的新表中

根据另一个表中的值插入和/或更新记录

插入触发器 SQL。插入新表后如何从另一个表中检索值