2016-11-30 1 views
0

가 쓰기에 동일한 ID를 가지고 행을 결합하는 쿼리를 result.How을 찾아 도와주세요MySQL의에서 ID를 기반으로 결합하는 방법을

id size sizeorder color colororder 
    1 M  1   null  null 
    1 null null  red  1 
    2 s  1   null  null 
    2 Null null  green  2 

출력해야

id size sizeorder color colororder 
    1 M  1   red  1 
    2 s  1   green  2 

답변

2
SELECT id, 
     MAX(size) AS size, 
     MAX(sizeorder) AS sizeorder, 
     MAX(color) AS color, 
     MAX(colororder) AS colororder 
FROM yourTable 
GROUP BY id 

수행하려는 롤업이 피벗 쿼리에서 발생하는 것과 비슷합니다. 위 쿼리의 "비밀 소스"는 MySQL의 MAX 함수가 NULL 값을 무시한다는 것입니다. 즉, 테이블에 NULL이 아닌 값만 각 열에 유지되며 각 그룹은 id입니다.

+0

이 가정 않는 동일한 ID에 대한이 개 기록은 최대 동일한 필드에 값이있는 경우 허용됩니다. – xQbert

+0

@xQbert 그리고 그룹당 2 개의 레코드 만 가정합니다. –

+0

주어진 그룹화 된 ID에 대해 최대 값을 허용하는 한 더 많은 정보가 필요합니다. – xQbert

0

당신은 null이 아닌 값을 얻을 수 있도록 테이블을 조인 할 때 케이스를 사용해야합니다 :

select case when t1.size is null then t2.size else t1.size end as size, 
    case when t1.sizeorder is null then t2.sizeorder else t1.sizeorder end as sizeorder, 
    case when t1.color is null then t2.color else t1.color end as color 
    case when t1.colororder is null then t2.colororder else t1.colororder end as colororder 

from <table> t1 join <table> t2 on t1.id = t2.id 
관련 문제