• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLで抽出可能でしょうか?)

SQLで抽出可能な条件を条件にして、指定した社員番号のレコードを取得する方法はありますか?

このQ&Aのポイント
  • Javaで開発されたツールで、データベースからレコードを取得する処理があります。具体的には、10,000件のデータを保持する社員テーブルから指定した社員番号に対応する社員名を取得する必要があります。ただし、条件に指定した社員番号のレコードが存在しない場合でも、結果として取得したいと考えています。現在のSELECT句ではIN条件を使用しており、一度に複数件のレコードを取得するため、WHERE句の修正はできません。一時表を使用せずに、DDLなしでこの要件を満たす方法はあるでしょうか?
  • 要件は、指定した社員番号に対応するレコードを取得する際、存在しない社員番号の場合も結果に含めたいというものです。現在のSELECT句ではIN条件を使用しており、一度に複数件のレコードを取得しています。一時表を使用せずに、DDLなしでこの要件を満たす方法はあるのでしょうか?
  • Javaで開発されたツールで、データベースから社員テーブルのデータを取得する処理があります。指定した社員番号に対応する社員名を取得するため、現在のSELECT句ではIN条件を使用しています。ここでの要件は、存在しない社員番号の場合でも結果に含めることです。一時表を使用せず、DDLなしでこれを実現する方法はあるのでしょうか?

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

select t1.syain_no, t1.syain_name from syain_tbl t1, (  select '0001' syain_no from dual union  select '0002' syain_no from dual union  select '0003' syain_no from dual ) t2 where t1.syain_no = t2.syain_no(+) order by t1.syain_no ;

superss28
質問者

お礼

ご回答ありがとうございます。 記述して頂いたSQLを下記のとおりに修正したところ 求めていた結果を得ることができました。 select t2.syain_no, t1.syain_name from syain_tbl t1, (  select '0001' syain_no from dual union  select '0002' syain_no from dual union  select '0003' syain_no from dual ) t2 where t2.syain_no = t1.syain_no(+) order by t2.syain_no

その他の回答 (1)

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

select syain_no, syain_name from syain_tbl where syain_no in ('0001','0002','0003') union all select syain_no, null from syain_tbl where syain_no not in ('0001','0002','0003')

superss28
質問者

お礼

ご回答ありがとうございます。 SQLを実行してみましたが、where句で指定した('0001','0002','0003')以外の '0004'や'0005'などの他のレコードも取得してしまいました。