2 つのテーブルを使用SELECT
する a と共にステートメントがあります。join
テーブルShell
とテーブルがありますTanker
。
こんな感じselect S.*, T.* from shell S left outer join tanker T on S.id = T.id
です。約 183 のフィールドがあることに注意してください。Tanker
だから私は次のデータを取得します
====Shell table==== =========Tanker table columsn======================
orgid org eli lang orgid org Lang {Other columns start}
906875 s 1 1 NULL NULL NULL NULL NULL NULL NULL
906876 s 2 2 NULL NULL NULL NULL NULL NULL NULL
906877 b 2 1 NULL NULL NULL NULL NULL NULL NULL
906878 s 1 1 NULL NULL NULL NULL NULL NULL NULL
906879 b 2 1 NULL NULL NULL NULL NULL NULL NULL
次に、orgid、org、lang、およびその他の 183 フィールドを選択します。だから今私はそうしています
select T.* FROM ....
が、これに関する問題は、、、、を選択するとorgid
、org
NULLのみが取得されることです。私は選択しているだけで、左結合であるため、当然これらはnullになるため、これは理にかなっています。lang
eli
T.*
ただし、私の目的では、それらがシェル テーブルの値である必要があります。つまり、シェルから orgid、org、eli、lang を選択してから、Tanker から残りを選択したいと考えています。私はこれを行う1つの方法は次のとおりであることを知っています
select s.orgid, s.org, s.eli, s.lang, t.column, t.column2, t.column3
Tanker T
しかし、ほぼ200列あることを思い出してください。スクリプトに 200 列を書きたくありません。
そこで質問です。
orgid、org、eli、lang の値 (つまり、実際の非 null 値) を null の列に「コピー」する方法はありますか? そうすればselect T.*
、200 列すべてを選択することができます。
本当に混乱している場合、私が探している最終結果は
====Shell table==== =========Tanker table columsn======================
orgid org eli lang orgid org Eli Lang {Other columns start}
906875 s 1 1 906875 s 1 1 NULL NULL
906876 s 2 2 906876 s 2 2 NULL NULL NULL
906877 b 2 1 906877 b 2 1 NULL NULL
906878 s 1 1 906878 s 1 1 NULL NULL NULL
906879 b 2 1 906879 b 2 1 NULL NULL NULL