2016-08-02 95 views
-1

我不太瞭解mysql。我有這個問題。我有一個數據庫,它是20 GB。我想合併4列,然後將組合列移動到新列。但問題是表中的數據是重複的。在MySQL中插入沒有重複的空數據的列?

例如,我想結合;

Column1(Not Null), 
Column2(Some of them null, some of them not null), 
Column3(Not Null), 
Column4(Some of them null, some of them not null). 

而我的新列,我想要移動我的組合列,是完全空的。我語重心長地研究之後,我終於找到dev.mysql.com

INSERT INTO my_table (new_content) 
    SELECT Column1 
    FROM my_table WHERE my_table > 0; 

結果這段代碼,它移動列1至NEW_CONTENT。但是我的其他20列也是重複的,因爲空的領域。我怎樣才能以簡單的方式做到這一點?

對不起,我的英語不好。提前致謝。

+1

你是什麼意思的合併列? – scaisEdge

+0

結合@scaisEdge – Katzenliebe

+1

你的意思是連接單數列中的列? – scaisEdge

回答

0

創建已經存在的表中的列:

ALTER TABLE my_table ADD COLUMN new_content VARCHAR(55); 

更新表和concate所有列到新創建的列:

​​

在今後所有的插入值創建觸發器以及:

CREATE TRIGGER insert_trigger 
BEFORE INSERT ON my_table 
FOR EACH ROW 
SET new.new_content = CONCAT(Column1, Column2); 

您還可以爲更新創建觸發器:

CREATE TRIGGER 
BEFORE UPDATE ON my_table 
FOR EACH ROW 
SET new.new_content = CONCAT(Column1, Column2); 
+0

謝謝,但它工作五十五。有些行的內容充滿了組合內容,但有些仍然是空的。爲什麼發生? – Katzenliebe

+0

我找到了。觸發器造成了它。我的答案解決了問題。非常感謝! @Jay Payel – Katzenliebe

+0

我很高興它幫助! –

1

如果你想基於字符串連接FO列一個結果列,您可以使用CONCAT

INSERT INTO my_table (new_content) 
SELECT concat(Column1 , Column2, Column3, Column4) 
FROM my_table ; 
+0

#1054 - 「字段列表」中的未知列'Column1' – Katzenliebe