我是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'此表格中的列取决于' date'柱。例如,如果' date'的值列不是空,然后是'fldState'的值应为1,如果它为空,那么“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
答案 0 :(得分:14)
在现有表格中,您需要创建ALTER
语句,以便添加新列。
ALTER TABLE mytableName ADD fldState INT;
成功执行语句后,您现在可以更新所有记录,
UPDATE myTableName
SET fldState = IF(date IS NULL, 2, 1)
答案 1 :(得分:7)
要添加新的新列,您可以使用以下命令
ALTER TABLE company_table ADD fldState;
如果您想在希望的地方添加这些列。如果您想在companyName之后添加fldState,那么请使用如下所示
ALTER TABLE company_table ADD fldState AFTER companyName;
如果要将Column添加为First Column,请使用aslike follow
ALTER TABLE company_table ADD fldState FIRST;
如果你不再使用任何东西,那么作为默认值,它将被放置在最后。
现在使用以下命令复制列数据。
UPDATE company_table SET fldState = IF(date IS NULL, 2, 1);
答案 2 :(得分:2)
您确定这是您想要做的 - 添加新列吗?您通过引入仅取决于日期的列来违反第3范式3NF。
您可以在wikipedia上详细了解相关信息。基本上所有列都应该依赖于表的行列式(PK)。
所以你可以考虑做的只是在你选择时创建那个列:
SELECT .. fldState = (process date)
FROM ...
除非你计划加入那个专栏,否则会更好,在这种情况下,速度超过3NF:)