2013-01-24 39 views
12

tôi mới trong Mysql. tôi muốn thêm một cột trong bảng có giá trị tùy thuộc giá trị cột khác trong cùng một bảng .Đối dụ tôi có company_table như sau:thêm cột mới trong bảng có giá trị tùy thuộc vào giá trị của một cột khác trong cùng một bảng

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

tôi muốn thêm cột 'fldState' trong bảng này tùy thuộc vào giá trị của ' ngày 'cột. ví dụ nếu giá trị của cột 'date' không phải là Null thì giá trị của 'fldState' nên 1 và nếu đó là Null thì giá trị của 'fldState' nên 2. như dưới đây

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 

Trả lời

13

Từ bảng hiện tại của bạn, bạn cần tạo câu lệnh ALTER để bạn có thể thêm cột mới.

ALTER TABLE mytableName ADD fldState INT; 

Sau khi tuyên bố đã được thực hiện thành công, bây giờ bạn có thể cập nhật tất cả các hồ sơ,

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

Để thêm cột mới mới bạn có thể sử dụng lệnh

sau
ALTER TABLE company_table ADD fldState; 

Nếu bạn muốn thêm cột đó vào địa điểm mong muốn của mình. Như như thế nào nếu bạn muốn thêm fldState sau CompanyName, Sau đó sử dụng như như sau

ALTER TABLE company_table ADD fldState AFTER companyName; 

NẾU bạn muốn thêm cột như cột đầu tiên, sau đó sử dụng aslike sau

ALTER TABLE company_table ADD fldState FIRST; 

nếu bạn không sử dụng bất cứ điều gì nhiều hơn, Sau đó, theo mặc định nó sẽ được đặt cuối cùng.

Bây giờ, hãy sử dụng như lệnh sau để Sao chép dữ liệu Cột.

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

Bạn có chắc chắn đây là những gì bạn muốn làm - thêm cột mới không? Bạn đang vi phạm biểu mẫu bình thường thứ 3, 3NF bằng cách giới thiệu một cột chỉ phụ thuộc vào ngày tháng.

Bạn có thể đọc thêm về nó trên wikipedia. Về cơ bản tất cả các cột của bạn nên phụ thuộc vào yếu tố quyết định của bảng (PK).

Vì vậy, những gì bạn có thể xem xét việc làm được tạo ra cột rằng chỉ khi bạn thực hiện chọn:

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

Đây sẽ là tốt hơn nếu bạn có kế hoạch tham gia vào cột đó rất nhiều, trong đó tốc độ hợp nhịp đập 3NF :)

Các vấn đề liên quan