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

この質問の投稿一覧へ

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

msg# 1
depth:
0
前の投稿 - 次の投稿 | 親投稿 - 子投稿.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;

投稿ツリー

  >フォーラム検索へ


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