2016-08-02 29 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