2010-03-17 3 views
6

나는 하나의 열이 SET 인 값표를 가지고있다.MySQL SET 유형의 멤버를 어떻게 업데이트합니까?

현재 회원 ('a', 'b', 'c', 'd')이있는 경우 가능한 값에 'e'를 어떻게 추가합니까?

나는 SET 타입을 사용하는 것이 약간 이상하다는 것을 알고 있으며 왜 세트의 값을 가지고 다른 테이블에 외래 키 대신이 값을 사용하는지 명확하지 않지만, 데이터베이스를 설계하지 않았다. 질문을하고, 그렇게 많이 바꿀 수는 없습니다.

도움 주셔서 감사합니다.

UPDATE :이 도움이된다면 내가 모든 행, 단지 하나의 SET 유형을 업데이트 할.

답변

5

을 그 설정 필드에, 또는 이미 거기에있어 그 테이블의 집합 필드의 현재 값에 'e'를 추가하고 싶습니까?

은 (예, 요소인지는 '두 번 거기에 넣어
ALTER TABLE set_test CHANGE myset myset SET('a','b','c','d','e'); 

, 그것은 "currentname : 그것은 허용 값이 이미 아니라면

, 당신은 ALTER 표를하고 현장을 다시 정의해야합니다 새 이름 "일종의.)

그렇지 않으면 그냥 앞의 답변과 마찬가지로 업데이트 테이블을하고 '전자'로 필드를 concat.

7

기존 SET에 요소를 추가하려면 CONCAT() 함수를 사용하여 쉼표로 구분 된 목록에 새 요소를 추가하십시오. 10 진수 값으로 작업하려면 비트 OR 연산자 |를 사용할 수 있습니다.

UPDATE set_test SET myset = CONCAT(myset,",Travel") 
     WHERE rowid = 3; 

또는

UPDATE set_test SET myset = myset | 1 WHERE rowid = 3; 

또한 우리를 위해 목록 구분을 처리하는 CONCAT_WS() 함수를 사용할 수 있습니다 : 당신은 허용 값으로 '전자'를 추가 할

UPDATE set_test SET myset = CONCAT_WS(',',myset,'Dancing') 
     WHERE rowid = 6; 
+0

그러나 이것은 한 행에 대한 것이며, WHERE 절을 제거하면 '행마'가 새 행의 가능성 목록에 추가됩니까? – Riddari

+1

예, 이것은 단일 행에 대한 것입니다. where 절없이 시도해보고 무슨 일이 일어나는 지보십시오. 내 생각에 모든 행에 추가됩니다. where 절을 사용하여 concat() 메서드를 사용합니다. – northpole

관련 문제