2016-04-07 5 views
2

私のデータは次のようなものです。mysqlクエリを使用して重複データを削除する方法

name day1 day2 day3 
Anand P  NA NA 
Anand NA P NA 
Anand NA NA P 


I want result like this 

name day1 day2 day3 
Anand P P  P 

グループ句は最初の行データのみを与えます。 私にmysqlクエリを提案してください。テーブル名はatt_tableとすることができます。

+0

NAとは何ですか?それはヌルですか? –

+0

P/NAの代わりに1/0を使用した場合、sum()をgroup byと組み合わせると、結果が得られます。 –

+0

フィールドに含まれる値は何ですか? intまたは文字列??? –

答えて

0

これを試してみてください。そして、

SELECT 
    name, 
    GROUP_CONCAT(IF(day1 = 'NA', NULL, day1)), 
    GROUP_CONCAT(IF(day2 = 'NA', NULL, day2)), 
    GROUP_CONCAT(IF(day3 = 'NA', NULL, day3)) 
FROM att_table 
GROUP BY name; 
+0

'GROUP BY'がありません – Barmar

+0

いいえ、GROUP BY句はここで目的を果たしません。 –

+0

'GROUP BY'を使用しない場合は、すべての異なる行のすべての行を結合します。 – Barmar

4

あなたがNULLNA値を置き換えるためにNULLIFを使用することができ、そして:文字列ではなくSQLのNULL値である

SELECT 
    name, 
    GROUP_CONCAT(day1), 
    GROUP_CONCAT(day2), 
    GROUP_CONCAT(day3) 
FROM att_table 
GROUP BY name; 

'NA'場合は、代わりにこれを試してくださいMAX()を使用して、各グループ内のnull以外の値を取得します。

SELECT name, MAX(NULLIF(day1, 'NA')) AS day1, MAX(NULLIF(day2, 'NA')) AS day2, MAX(NULLIF(day3, 'NA')) AS day2 
FROM att_table 
GROUP BY name 
関連する問題