Подтвердить что ты не робот

Добавить новый столбец в таблицу со значением, зависящим от значения другого столбца в одной таблице

Я новичок в 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
4b9b3361

Ответ 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:)