問題ID:13645の正解の選択肢について
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;
「副問合せの列のリストが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;
投稿ツリー
-
問題ID:13645の正解の選択肢について
(tonet, 2021-3-28 23:03)
- Re: 問題ID:13645の正解の選択肢について (staff_meg, 2021-3-29 10:52)
- Re: 問題ID:13645の正解の選択肢について (tonet, 2021-3-29 10:59)