4

多数の重複データを組み合わせる必要があるという問題があります。私は2つの異なるソースからマージされたテーブルから始めています。データの例は次のとおりです。

aID、bID、value1、value2、value3、value4

問題は、aIDがbIDと一致するが、他のフィールドの1つだけが入力される状況があることです。

1、1、samedata、null、null、1
1、1、samedata、red、null、null
1、1、samedata、null、htmldata、null

データの行全体を表示する方法を探していますが、nullではないすべての値をロールアップして、一致するIDごとに1行になるようにします。Group ByとGroup_Concatを試しましたが、秘密のソースはまだ見つかりませんでした。

上記の例から必要な1行は次のようになります。

1、1、samedata、red、htmldata、1

何か案は?

4

2 に答える 2

3

1つのトリックは、MAXまたはを使用するMINことです。これは、null値よりもnull以外の値を優先するためです。

SELECT aID,
       bID,
       MAX(value1) AS value1,
       MAX(value2) AS value2,
       MAX(value3) AS value3,
       MAX(value4) AS value4
  FROM ...
 GROUP
    BY aID,
       bID
;

(私MAXがこの目的で使用するとき、それはカジュアルな読者にはすぐにはわからないので、私は通常これに注意するコメントを含めます。)

于 2012-07-16T20:21:39.447 に答える
0

これを試して::

Select 
aID,
bId,
value1,
value2, value3
from table 
group by CONCAT(ifnull(aID,-1),ifnull(bId)
于 2012-07-16T20:19:19.947 に答える