2016-06-27 12 views
0

테이블에 특정 조건의 행이있는 경우 새 열을 생성하려고합니다.특정 행이있는 경우 MYSQL 열을 특정 값으로 설정하는 방법은 무엇입니까?

name | col1 | col2 | flag 
-------------------------- 
a  1  2  0 
a  2  3  0 
b  1  2  0 
b  4  3  0 

은 행이 그 name 어디 col1=2col2 = 3에있는 경우 내가 모든 name 식별자 1로 플래그를 설정하고 싶은 말은 수 있습니다.

a에 대한 col1=2col2 = 3와 행이 존재
name | col1 | col2 | flag 
-------------------------- 
a  1  2  1 
a  2  3  1 
b  1  2  0 
b  4  3  0 

때문에,하지만 b를 들면, 행이 존재하지 않습니다 그래서이 될 것입니다.

ALTER TABLE table_name 
ADD flag TINYINT(1) 
IF ##row with condition col1=value1 and col2=value2 exists# 
GROUP BY name 

가 어떻게이 열을 생성 할 수 있습니다

: 의사에서

나는 이런 식으로 뭔가를 원하는?

+1

'ALTER TABLE'은 테이블 스키마를 변경하기위한 것이지, 테이블의 데이터. 'UPDATE'와'iNSERT'는 행을 수정하고 추가하기위한 것입니다. – Barmar

답변

2

그래서 db로부터 그 값을 얻고 싶습니까? 또는 열을 추가 하시겠습니까? 그것들은 두 가지 목표입니다.

당신은 당신이 할 수있는 그 값을 얻을 단지 필요가 그래서 경우 :

http://sqlfiddle.com/#!9/65b4c2/1

SELECT t.*, t2.flag 
FROM table_name t 
LEFT JOIN (
    SELECT name, MAX(IF(col1=2 AND col2=3,1,0)) flag 
    FROM table_name 
    GROUP BY name 
) t2 
ON t.name = t2.name 

을하고 당신이 정말로 새 열을 추가해야하는 경우 당신은이 방법으로 이동합니다

http://sqlfiddle.com/#!9/226fb3/1

ALTER TABLE table_name ADD COLUMN flag TINYINT; 

UPDATE table_name t 
LEFT JOIN (
     SELECT name, MAX(IF(col1=2 AND col2=3,1,0)) flag 
     FROM table_name 
     GROUP BY name 
    ) t2 
ON t.name = t2.name 
SET t.flag=t2.flag 
관련 문제