2016-11-30 6 views

答えて

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ごとに各列に保持されることを意味します。あなたは、あなたのテーブルを結合し、nullでない値を取得する際にケースを使用する必要が

+0

これは、同じIDの場合、2つのレコードは、同じフィールドに最大の価値を持っていることを前提としません受け入れられる。 – xQbert

+0

@ xQbertそして、それはグループあたり2つのレコードしか想定していません。 –

+0

与えられたグループ化されたIDに対してmaxが受け入れられる限り、もっとうまくいくでしょう。 – xQbert

0

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 
関連する問題