2013-02-22 108 views
5

這是我的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

回答

1

我覺得這是你追求的:

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

1

一些這取決於你想如何選擇保持名稱。它可能很容易:

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

如果您有更復雜的規則來確定選擇哪個名稱,則需要以不同方式實施。

2

您可以使用下面的查詢。

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