-PR-
  • すぐに回答を!
  • 質問No.7667198
解決
済み

SQL初心者です。

  • 閲覧数58
  • ありがとう数0
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 0% (0/1)

【Table1】
Col1 Col2
Aa A
Ab A
Ba B
Bb B
Ca C
Ca D

【Table2】(Data1は固定)
Data1 Data2
Aa A
Ab B→A
Ba C→B
Bb A→B
Ca B→C
Ca C
※Col1に重複がある場合、重複結果の1行目のレコードをData2に入れる
(今回の場合CをData2に入れる)

Data1は固定で、Table1を使ってData2を上記の様に修正するSQLが書けなくて困っています。

Col1が重複してない場合の修正するSQLを書いてみましたが(合っているかはわかりませんが...)、
重複する場合のSQLも追加して最終的に1つのSQLで、すべて修正できるようにしたいです。
update Table2 T2
 set Data2=
 (select Col2 from Table1
 where Col1=
  (select Col1 from Table1 T1
  where T2.Data1=T1.Col1
  group by T1.Col1
  having count(T1.Col1)=1
 )
)

わかりにくい部分もあると思いますが、ご教授お願いします。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル12

ベストアンサー率 68% (258/374)

>※Col1に重複がある場合、重複結果の1行目のレコードをData2に入れる
の「1行目」の定義がハッキリ書かれていませんが、
例を見ると一番小さな値ということでいいのでしょうか。

それなら単純に、

UPDATE Table2 T2
SET Data2 =
(SELECT MIN(T1.Col2)
FROM Table1 T1
WHERE T1.Col1 = T2.Data1);

でいいのではないでしょうか。
ただ、このSQLだとTable1にTable2のData1と一致するデータがない場合は
NULLに更新されてしまうので気を付けてください。
もし、そういうデータが存在するのであれば
UPDATE文のWHERE句にEXISTS条件を書くようにしてください。
-PR-
-PR-
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ