問題ID:13645の正解の選択肢について
- フォーラムは新サイトへ移行しました。
- このフォーラムではゲスト投稿が禁止されています
問題ID:13645の正解の選択肢について
msg# 1
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;
Re: 問題ID:13645の正解の選択肢について
msg# 1.1
staff_meg
投稿数: 427
tonetさん
ご指摘の点を修正致しました。
ご報告、誠にありがとうございました。
ご指摘の点を修正致しました。
ご報告、誠にありがとうございました。
Re: 問題ID:13645の正解の選択肢について
msg# 1.2
tonet
投稿数: 2
早々のご確認、ご返信ありがとうございました。
疑問が解消され大変助かりました。
疑問が解消され大変助かりました。