Добавить новый столбец в таблицу со значением, зависящим от значения другого столбца в одной таблице
Я новичок в 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, а если значение "Нуль", то значение "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
Ответы
Ответ 1
Из вашей существующей таблицы вам нужно создать оператор ALTER
, чтобы добавить новый столбец.
ALTER TABLE mytableName ADD fldState INT;
После успешного выполнения инструкции вы можете обновить все записи,
UPDATE myTableName
SET fldState = IF(date IS NULL, 2, 1)
Ответ 2
Чтобы добавить новый столбец, вы можете использовать следующую команду
ALTER TABLE company_table ADD fldState;
Если вы хотите добавить эти столбцы в своем желаемом месте. Как будто, если вы хотите добавить fldState после companyName, тогда используйте, как показано ниже.
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);
Ответ 3
Вы уверены, что это то, что вы хотите сделать - добавить новый столбец? Вы нарушаете 3-ей нормальную форму, 3NF, введя столбец, который зависит только от даты.
Подробнее об этом можно узнать на wikipedia. В основном все ваши столбцы должны зависеть от детерминанта таблицы (PK).
Итак, что вы можете сделать, это создать этот столбец только при выборе:
SELECT .. fldState = (process date)
FROM ...
Это было бы лучше, если вы не планируете присоединиться к этой колонке много, и в этом случае скорость превосходит 3NF:)