Mysql 在表中添加新列,其值取决于同一表中另一列的值
我是Mysql的新手。我想在表中添加一列,其值取决于同一表中的另一列值。例如,我的公司_表如下:Mysql 在表中添加新列,其值取决于同一表中另一列的值,mysql,sql,Mysql,Sql,我是Mysql的新手。我想在表中添加一列,其值取决于同一表中的另一列值。例如,我的公司_表如下: fldId | companyName | date -------------------------------- 1 | adeco | 2012-01-12 2 | mic | 2001-03-09 3 | manpower | Null 4 | linar | Null 5 | dlank
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”列。例如,如果“日期”列的值不为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
从现有表中,需要创建一个
ALTER
语句,以便添加新列
ALTER TABLE mytableName ADD fldState INT;
UPDATE myTableName
SET fldState = IF(date IS NULL, 2, 1)
要添加新列,可以使用以下命令
ALTER TABLE company_table ADD fldState;
如果你想在你想要的地方添加这些栏。如果您想在companyName之后添加fldState,则使用如下所示
ALTER TABLE company_table ADD fldState AFTER companyName;
若要将列添加为第一列,请使用如下类似的方法
ALTER TABLE company_table ADD fldState FIRST;
如果你不再使用任何东西,那么默认情况下,它将被放置在最后
现在像下面一样使用命令复制列数据
UPDATE company_table SET fldState = IF(date IS NULL, 2, 1);
是否确实要执行此操作-添加新列?通过引入一个只依赖于日期的列,您违反了第三个标准形式3NF 你可以在网上了解更多。基本上,所有列都应该依赖于表的行列式(PK) <> P>所以,你可以考虑做的只是在选择SELE:时创建该列。
SELECT .. fldState = (process date)
FROM ...
这会更好,除非你计划加入该专栏,在这种情况下,速度超过3NF:)