2017-02-15 91 views
0

我有一個有多個存儲名稱的列的舊錶,這些名字可能會在整個表中重複多次。我想選擇每個列中的所有名稱,丟棄重複的名稱,然後將它們插入到新表格中。將多個select語句值插入到單個列中?

現在我一次只能做一個select語句,而DISTINCT函數不會在每個select語句之間進行,所以我最終得到了重複名稱。我正在使用MySQL。

INSERT INTO new_table (name) 
SELECT DISTINCT old_table.name 
FROM old_table 
WHERE blah blah blah 

INSERT INTO new_table (name) 
SELECT DISTINCT old_table.name2 
FROM old_table 
WHERE blah blah blah 

回答

0

與UNION子句一樣,它會明顯的所有重複值 -

SELECT name FROM old_table 
    UNION 
SELECT name2 FROM old_table 
    UNION 
SELECT name3 FROM old_table 

其應用到INSERT ... SELECT查詢 -

INSERT INTO new_table(name) 
    SELECT name FROM old_table 
    UNION 
    SELECT name2 FROM old_table 
    UNION 
    SELECT name3 FROM old_table 
+0

它的工作原理,謝謝 – reddy

0

您可以創建臨時表並將名稱插入表中,然後嘗試從臨時表中選擇DISTINCT。

創建臨時表:

create temporary table dummy (name text); 

貴公司的所有內頁:

INSERT INTO dummy (name) 
SELECT DISTINCT old_table.name 
FROM old_table 
WHERE blah blah blah; 

最後

INSERT into new_table(name) 
select distinct dummy.name 
from dummy;