2013-01-24 35 views
12

我是Mysql中的新成员。我想在表中添加柱值在同一个表根据另一列的值。例如,我有company_table如下:在表中添加新列,其值与表中另一列的值相关

fldId | companyName | date 
-------------------------------- 
    1 | adeco  | 2012-01-12  
    2 | mic   | 2001-03-09 
    3 | manpower | Null 
    4 | linar  | Null 
    5 | dlank  | 1999-02-28 

我想在此表取决于“值加“fldState”列日期“栏。例如,如果“日期”列的值不为空,然后“fldState”的值应该是1,如果它是null,则“fldState”的值应该为2。如下面

fldId | companyName | date  | fldState 
    -------------------------------------------- 
    1  | adeco  | 2012-01-12 | 1 
    2  | mic   | 2001-03-09 | 1 
    3  | manpower | Null  | 2 
    4  | linar  | Null  | 2 
    5  | dlank  | 1999-02-28 | 1 

回答

13

从你现有的表,你需要创建一个ALTER语句,以便您可以添加新列。

ALTER TABLE mytableName ADD fldState INT; 

语句已经成功执行后,您现在可以更新所有的记录,

UPDATE myTableName 
SET  fldState = IF(date IS NULL, 2, 1) 
7

要添加新的新列,您可以使用下面的命令

ALTER TABLE company_table ADD fldState; 

如果您想在希望的地方添加这些列。因为如果你想的companyName后添加fldState像,然后像下面

ALTER TABLE company_table ADD fldState AFTER companyName; 

如果你想添加列作为第一列使用,然后使用aslike以下

ALTER TABLE company_table ADD fldState FIRST; 

,如果你不使用更多的东西,然后默认它将被放置在最后。

现在使用像以下命令复制列数据。

UPDATE company_table SET fldState = IF(date IS NULL, 2, 1); 
2

你确定这是你想要做的 - 添加一个新的列?你违反了第三范式,即3NF,通过引入一个只取决于日期的列。

你可以在wikipedia上阅读更多关于它的信息。基本上所有的列应该依赖于表格的决定因素(PK)。

所以,你可以考虑做的事情只是创建列,当你做了选择:

SELECT .. fldState = (process date) 
FROM ... 

这将是更好的,除非你打算加入该列有很多,在这种情况下,速度击败3NF :)

相关问题