在创建新表格时插入其他表格中的值

问题描述:

这是我的FIDDLE在创建新表格时插入其他表格中的值

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

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

INSERT INTO table_old (name, email) VALUES ('tom', '[email protected]'), 
              ('peter', '[email protected]'), 
              ('hitler', '[email protected]'), 
              ('haasan', '[email protected]'), 
              ('arun', '[email protected]'), 
              ('tom', '[email protected]'), 
              ('peter', '[email protected]'), 
              ('hitler', '[email protected]'), 
              ('haasan', '[email protected]'), 
              ('arun', '[email protected]'); 

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

所以,请给我想法如何在电子邮件列名中插入名称到table_new。

+0

只需添加名称? 'CREATE TABLE table_new AS(SELECT DISTINCT name,email FROM table_old);' – Andomar 2013-02-22 10:01:10

+0

我认为这只需要每个副本的一个副本即使名称不同。 – Joe 2013-02-22 10:02:01

+0

是的乔。你是对的。我只需要一份冗余内容。虽然你是对的,但蒂姆解决我的问题更快。 – 2013-02-22 10:07:09

我觉得这是你追求的:

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

首先,我使用auto_inc和主键创建了user_id表。后来我正在用alter table命令尝试上面的查询。我收到错误。不能我这样做。? – 2013-02-22 11:33:53

一些这取决于你想如何选择保持名称。它可能很容易:

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

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

您可以使用下面的查询。

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