在MySQL中插入没有重复空数据的列?

时间:2016-08-02 20:30:39

标签: php mysql

我不太了解mysql。我对此有疑问。我有一个数据库,它是20 GB。我想组合4列,然后将组合列移动到新列。但问题是表中的重复数据。

例如我想结合;

 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;

结果,它将Column1移动到new_content。但我的其他20个专栏也是重复的,就像空场一样。我怎样才能轻松搞定?

抱歉我的英语不好。提前致谢。

2 个答案:

答案 0 :(得分:1)

如果您希望根据列的字符串连接得到结果列,则可以使用concat

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

答案 1 :(得分:0)

在现有表中创建列:

ALTER TABLE my_table ADD COLUMN new_content VARCHAR(55);

更新表并将所有列连接到新创建的列:

UPDATE my_table SET new_content = CONCAT(Column1, Column2);

以后为所有插入值创建一个触发器:

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

您还可以为UPDATE创建触发器:

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