2013-01-24 66 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 :)

相關問題