- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複雑な条件下におけるupdate文について)
複雑な条件下におけるupdate文について
このQ&Aのポイント
- sqlserver(2008R2)でのクエリ文の書き方について質問です。
- personal_tableというテーブルから一時テーブル#table01を作成し、特定の条件に基づいてデータを更新したいです。
- 具体的なクエリを試したが、personal_nameがすべてnullになってしまいました。正しいクエリの書き方を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
WHERE条件に「全ての列がNullで無い」を指定したら、personal_idを網羅できますか? 同一idで複数行出てこないなら、そこから取得する。 複数行出るなら、Topキーワード使って一行に絞れば良さそう。 updateのwhere条件には、更新対象列 is Null入れとけば良いし。
その他の回答 (1)
- bin-chan
- ベストアンサー率33% (1403/4213)
回答No.1
とりあえずMAXを取得する部分のエイリアスもAであることが気になります。 B等、重複しないエイリアスにしてみては?
質問者
お礼
ご回答ありがとうございます。 ベストアンサーが複数出来ればしていたのですが、、、。 しかし、参考にさせていただきました。
お礼
回答ありがとうございました。 結果的に以下のクエリによって目的の動作が出来ました drop table #table01 select * into #table01 from personal_table update #table01 set personal_name = (select personal_name from #table01 A where #table01.personal_id = A.personal_id AND A.personal_date = (select MAX(B.personal_date) from #table01 B where #table01.personal_date > B.personal_date AND #table01.personal_id = B.personal_id AND B.personal_name is not null)) where personal_name is null SELECT * from #table01