1

私の SQL はさびているので、助けが必要です。私の説明で混乱しないことを願っています。

これらの行の少なくとも 1 つがフィールド B に定数値を持っている場合、フィールド A のすべての重複値を見つけるステートメントが必要です

フィールド A | フィールド B
犬 | 犬歯
|写真 犬歯 ヌル
犬 | ヌル

フィールド B は犬なので、フィールド A の値を複製するすべての行が必要です。select ステートメントが必要ですが、私の意図はフィールド C の値を重複のために変更することですが、おそらく後でそれを理解することができます。

4

4 に答える 4

2

count(fielda) > 1いずれかfieldbが値を持つすべての行を取得するにはcanine

select t1.fielda
from mytab t1
join (select fielda, count(*) as dups
      from mytab
      group by fielda) t2 on t2.fielda = t1.fielda
where t1.fieldb = 'canine'
and t2.dups > 1

SQLフィドル

于 2013-05-24T16:20:08.120 に答える
2

FieldB値が均一に NULL ではないすべての行が必要なようです。

FieldAこれにより、その特性を持つのリストが得られます。

select FieldA
from t
group by FieldA
having count(FieldB) > 0;

NULL値を含む行が実際に必要な場合は、次のようにします。

select FieldA, FieldB
from (select t.*, count(FieldB) over (partition by FieldA) as cnt
      from t
     ) t
where cnt = 0;

それらの1 つが犬歯であるすべての FieldA を取得するには、次のようにします。

select distinct FieldA
from t
where FieldB = 'canine';

すべての行を取得するには、where句でこれを使用します。

select *
from t
where t.FieldA in (select distinct FieldA
                   from t
                   where FieldB = 'canine'
                  );
于 2013-05-24T15:49:40.220 に答える