2013-01-24 2 views
12

저는 MySQL에 새로 왔습니다. 난 '의 값에 따라 표에'fldState '항목을 추가 할동일한 테이블에있는 다른 열의 값에 따라 값이있는 테이블에 새 열을 추가하십시오.

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

: 저는 아래로 company_table이 값은 예 .FOR 같은 테이블의 다른 열 값을 따라 함께 테이블에서 열을 추가 할 날짜 '열에 표시됩니다. 예를 들어 '날짜'열의 값은 'fldState'의 값이 1이어야한다 null가 아닌 경우, 그것은 'fldState'의 값이 다음 널의 경우 기존 테이블에서

아래
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 

답변

13

처럼 2.되어야합니다, 당신 새 열을 추가 할 수 있도록 ALTER 문을 작성해야합니다.

  • Adding New Column from a table
  • 명령문이 성공적으로 실행 한 후, 당신은 지금 모든 레코드를 업데이트 할 수 있습니다

    ALTER TABLE mytableName ADD fldState INT; 
    
      ,

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

    명령

    다음은 사용할 수있는 새로운 새 열을 추가하려면
    ALTER TABLE company_table ADD fldState; 
    

    원하는 곳에 해당 열을 추가하려는 경우. 당신이 첫 번째 열로 열을 추가 할 경우 회사 이름 후 fldState을 추가하려는 경우 등이, 그리고 사용하지 않는 경우

    ALTER TABLE company_table ADD fldState FIRST; 
    

    을 다음 aslike 사용 후,

    ALTER TABLE company_table ADD fldState AFTER companyName; 
    

    을 다음과 같이로 사용 더 많은 것은, 그 때 기본적으로 그것 마지막에 둘 것이다.

    이제 다음과 같이 열 데이터 복사 명령을 사용하십시오.

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

    새 항목을 추가 하시겠습니까? 세 번째 정규 서식 인 3NF를 위반하는 것은 날짜에 의존하는 열을 도입하는 것입니다.

    자세한 내용은 wikipedia에서 확인할 수 있습니다. 기본적으로 모든 열은 테이블의 결정자 (PK)에 의존해야합니다.

    그래서 당신은 선택을 할 때 해당 열을 만드는 일을 고려할 수있는 :

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

    당신이 경우 속도가 3NF 뛰고있는 그 열 많은에 가입 할 계획이 아니라면이 더 나은 것 :)

    관련 문제