在创建新表时插入另一个表中的值
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语句怎么写