問題ID:13645の正解の選択肢について

  • フォーラムは新サイトへ移行しました。
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2021-3-28 23:03 | 最終変更
tonet  新米   投稿数: 2
問題文のSQL文のエラーの原因について、
「副問合せの列のリストがPROD2表の列構成の順番と異なるため」のみが正解となっていますが、
「INSERT句に列のリストが指定されていないため」についても正解とならない理由が分かりませんでした。

当該選択肢については、
・INSERT句に列のリストが指定されていないため
  INSERT句の列のリストは省略可能です。
とのみ解説されておりました。

念のため簡易的な表を用いてLive SQLで確認したところ、
副問合せの列のリストが、挿入先の表の列構成の順番と異なっていても、
INSERT句に、(副問合せのSELECT句と同じデータ型となる並びで)列のリストを指定すればINSERTは実行できており、
自分は問題文の何を見落としているのか突き止められずにおります。

以下、問題文です:
---------------------------
PROD表と同じ構造をもつPROD2表を作成し、次のSQL文を実行したところ、エラーとなりました。エラーの原因は何ですか。

 INSERT INTO PROD2
  SELECT name, category, prodid, startdate, enddate
  FROM prod
  WHERE prodid < 50;
---------------------------

「下記の形でINSERT句にも列名を指定すればエラーは起こらないのではないか?」
つまり、「INSERT句に列のリストが指定されていないため」エラーが起きたとも言えるのではないか?
というのが疑問点です。

 INSERT INTO PROD2 (name, category, prodid, startdate, enddate)
  SELECT name, category, prodid, startdate, enddate
  FROM prod
  WHERE prodid < 50;
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2021-3-29 10:52
staff_meg  長老   投稿数: 427
tonetさん

ご指摘の点を修正致しました。
ご報告、誠にありがとうございました。
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2021-3-29 10:59
tonet  新米   投稿数: 2
早々のご確認、ご返信ありがとうございました。
疑問が解消され大変助かりました。

  >フォーラム検索へ


Copyright (c) 2020 Ping-t All rights reserved.