我有一个SELECT
声明以及一个join
使用两个表的声明。我们有桌子Shell
和桌子Tanker
。
它看起来像这样select S.*, T.* from shell S left outer join tanker T on S.id = T.id
。请注意,它Tanker
有大约 183 个字段。
所以我得到以下数据
====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
,时lang
,eli
它只获得 NULLS。这是有道理的,因为我只选择T.*
并且它是一个左连接,所以这些自然会为空。
但是,出于我的目的,我需要它们成为 shell 表中的值。即,我想从 Shell 中选择 orgid、org、eli、lang,然后从 Tanker 中选择其余的。我知道我这样做的一种方法是
select s.orgid, s.org, s.eli, s.lang, t.column, t.column2, t.column3
但 RECALL有Tanker T
近 200 列。我不想在我的脚本上写 200 列。
所以这就是问题所在。
有什么方法可以将 orgid、org、eli、lang 的值(即实际的非空值)“复制”到空的列中?这样我就可以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