在表中添加新列,其值取决于同一表中另一列的值

noh*_*han 13 mysql sql

我是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
Run Code Online (Sandbox Code Playgroud)

我想在此表中添加'fldState'列,具体取决于'date'列的值.例如,如果'date'列的值不是Null,那么'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
Run Code Online (Sandbox Code Playgroud)

Joh*_*Woo 16

从现有表中,您需要创建一个ALTER语句,以便添加新列.

ALTER TABLE mytableName ADD fldState INT;
Run Code Online (Sandbox Code Playgroud)

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

UPDATE  myTableName
SET     fldState = IF(date IS NULL, 2, 1)
Run Code Online (Sandbox Code Playgroud)


小智 7

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

ALTER TABLE company_table ADD fldState;
Run Code Online (Sandbox Code Playgroud)

如果您想在希望的地方添加这些列.如果你想在companyName之后添加fldState,那么请使用如下所示

ALTER TABLE company_table ADD fldState AFTER companyName;
Run Code Online (Sandbox Code Playgroud)

如果要将Column添加为First Column,则使用aslike follow

ALTER TABLE company_table ADD fldState FIRST;
Run Code Online (Sandbox Code Playgroud)

如果你不再使用任何东西,那么默认它将被放置在最后.

现在使用如下命令复制列数据.

 UPDATE company_table SET fldState = IF(date IS NULL, 2, 1);
Run Code Online (Sandbox Code Playgroud)