14

私は 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」列の値が 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
4

3 に答える 3

18

既存のテーブルから、ALTER新しい列を追加できるようにステートメントを作成する必要があります。

ALTER TABLE mytableName ADD fldState INT;

ステートメントが正常に実行されたら、すべてのレコードを更新できます。

UPDATE  myTableName
SET     fldState = IF(date IS NULL, 2, 1)
于 2013-01-24T12:04:23.830 に答える
7

新しい新しい列を追加するには、次のコマンドを使用できます

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);
于 2013-01-24T12:21:23.773 に答える
3

これがあなたのやりたいことだと確信していますか?新しい列を追加しますか?日付のみに依存する列を導入することにより、第3正規形である3NFに違反しています。

あなたはウィキペディアでそれについてもっと読むことができます。基本的に、すべての列はテーブルの行列式(PK)に依存する必要があります。

したがって、実行を検討できるのは、選択を実行した場合にのみその列を作成することです。

SELECT .. fldState = (process date)
FROM ...

あなたがそのコラムにたくさん参加することを計画していない限り、これはより良いでしょう、その場合、速度は3NFを上回ります:)

于 2013-01-24T12:26:39.393 に答える