現在、CREATE TABLE AS SELECT文を使用してテーブルを作成しようとしています。 SELECTステートメント内では、現在、多数のテーブル(10以上)にジョインされています。selectテーブルとしてcreate tableを使用すると重複するカラム名を避ける
CREATE TABLE table_name AS
SELECT
*
FROM
table_x x
LEFT JOIN
table_y y
on x.id=y.fid
LEFT JOIN
table_z z
on x.id=z.fid
...
...
...
テーブルの多くが(データではありませんが)列名を共有しているため、重複する列名エラーが発生しています。
私は、列名を生成するために怠惰な方法があるかどうか疑問に思っていたので、衝突はありません。たとえば、上記の例では、table_y
とtable_z
の両方にfid
という列があります。 y.id
とz.id
、または類似した何かを呼ばれる列を生成する方法があった場合
私は思っていた(例えばy_id
、z_id
)新しいテーブル内だけではなくid
とid
?
私は次のようAS
文を、私は明示的に選択のすべての列を記述する必要がクエリを書き込まないようにしたい、と私たち:
CREATE TABLE table_name AS
SELECT
x.id as x_id,
y.fid as y_fid,
z.fid as z_fid,
...
...
...
FROM
table_x x
LEFT JOIN
table_y y
on x.id=y.fid
LEFT JOIN
table_z z
on x.id=z.fid
...
...
...
ベストプラクティスは、基になるテーブル構造が変更されたときに他のクエリ、関数、プロシージャが破損するのを防ぐために、新しい名前の開発者が何らかの変更を加えなければならない場合スクリプトに記述されている場合には、何が引き込まれているのかを知る上でより良い機会になります。新しいテーブルに必要でないカラムがいくつかあるので、それらを選択する必要はありません。 – MarkD
この練習の一部は、複数のテーブルに記録されているデータを健全にチェックすることです。各列に各表の識別子を接頭辞として付けます。私は、参加するために使用される列間で値が重複することを十分に理解していますが、これは運用環境では使用されず、重複したコンテンツを持つことはこの使用例にとって大きな心配ではありません。 – jonhurlock