2017-05-21 25 views
0

私は既存のテーブルをモデルにテーブルを作成しました:選択プラス値を使用してテーブルに挿入しますか?

CREATE TABLE new_table AS 
(SELECT * FROM old_table WHERE record_status = 'xyz') WITH DATA; 

私は、その後、カラムを追加しました:

ALTER TABLE new_table ADD new_column VARCHAR(100); 

私は今、新しいテーブルに古いテーブルから複数の行を選択したいのですが、追加選択された各行の新しい列に対する固定値(例えば、'blabla')。

INSERT INTO new_table 
SELECT *, 'blabla' 
FROM old_table) 
WHERE is_blabla = 'Y' 

私は考えても構いませんが、構文エラーが発生しています。助言がありますか?私はTeradataを使用しています。あなただけのSELECT NEW_TABLE にあなたのテーブル

INSERTをエイリアスする必要があります。*

  • デイブ
+0

オプティマイザは、 '*'のすべてのカラムを想定しています。 Oracleは同じ方法で動作します。テーブルの別名を付けてから、 'myalias。*'を使用する必要があります。 – dnoeth

+0

'*'の代わりに 'old_table。*'を使うか、テーブルをエイリアスにして、@dnoethを指定してエイリアスを使用してください。これは単なるTDの技術的な制限であり、論理的な制限ではありません。例えば、SQL Serverは 'select *、 'blabla''や' select *、*、* 'には何の問題もありません –

答えて

1
INSERT INTO new_table 
SELECT old_table.*,'your_fixed_value' 
FROM old_table 
WHERE is_blabla='Y' 
0

、 'your_fixed_valueは' OLD_TABLE WHERE is_blabla = 'Y' FROM

関連する問題