2013-01-24 28 views
12

ich bin neu in Mysql. Ich möchte eine Spalte in der Tabelle hinzuzufügen, mit dem Wert .für Beispiel eines weitere Spalte Wert in der gleichen Tabelle je habe i company_table wie folgt:neue Spalte in Tabelle mit Wert abhängig Wert einer anderen Spalte in der gleichen Tabelle hinzufügen

fldId | companyName | date 
-------------------------------- 
    1 | adeco  | 2012-01-12  
    2 | mic   | 2001-03-09 
    3 | manpower | Null 
    4 | linar  | Null 
    5 | dlank  | 1999-02-28 

ich will Spalte in dieser Tabelle ‚fldState‘ hinzuzufügen je nach Wert von ' Datum 'Spalte. wenn der Wert von ‚Datum‘ -Spalte zum Beispiel ist nicht Null, dann Wert von ‚fldState‘ 1 sein soll und wenn es Null ist dann Wert von ‚fldState‘ soll 2. wie unter

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 

Antwort

13

aus Ihrer vorhandenen Tabelle sein, Sie Sie müssen eine ALTER Anweisung erstellen, damit Sie eine neue Spalte hinzufügen können.

ALTER TABLE mytableName ADD fldState INT; 

Nachdem die Anweisung erfolgreich ausgeführt wurde, können Sie nun alle Datensätze aktualisieren,

UPDATE myTableName 
SET  fldState = IF(date IS NULL, 2, 1) 
7

Um neue neue Spalte hinzufügen Sie

folgenden Befehl verwenden können,
ALTER TABLE company_table ADD fldState; 

Wenn Sie diese Spalte in Ihrem Wunschort hinzufügen möchten. Als wie wenn Sie fldState nach company hinzufügen möchten, verwenden Sie dann wie wie folgt

ALTER TABLE company_table ADD fldState AFTER companyName; 

WENN Sie Spalte als erste Spalte hinzufügen möchten, verwenden Sie dann aslike folgende

ALTER TABLE company_table ADD fldState FIRST; 

, wenn Sie nicht verwenden Irgendetwas mehr, Dann als Standard wird es schließlich platziert.

Verwenden Sie nun den folgenden Befehl, um Spaltendaten zu kopieren.

UPDATE company_table SET fldState = IF(date IS NULL, 2, 1); 
2

Sind Sie sicher, dass Sie das möchten - eine neue Spalte hinzufügen? Sie verstoßen gegen die 3. Normalform 3NF, indem Sie eine Spalte einführen, die nur vom Datum abhängt.

Sie können mehr über es auf wikipedia lesen. Grundsätzlich sollten alle Ihre Spalten von der Determinante der Tabelle (PK) abhängig sein.

Also, was Sie betrachten können, tun, ist nur diese Spalte zu schaffen, wenn Sie die Auswahl tun:

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

Dies wäre besser, es sei denn, Sie planen, eine Menge auf dieser Spalte zu verbinden, wobei Geschwindigkeit die 3NF schlägt :)

Verwandte Themen