1

我有 3 个表,想从 2 个表中获取数据并将其转储到第三个表。这两个表也可以有相互关联的数据和独立的数据。所以,我想得到所有 3 种可能情况的联合。

3个不同的表是a,b和c

示例查询:

Insert into c (scode, cname, fvalue, ISIN, nsymbol, paidup)

select scode, cname, fvalue, ISIN, null, null from a,b where a.ISIN <> b.ISIN

union

select scode, cname, fvalue, ISIN, nsymbol, paidup from a,b where a.ISIN = b.ISIN

union

select null, b.cname, b.fvalue, b.ISIN, b.nsymbol, b.paidup from a, b where b.ISIN <> a.ISIN

我为每条记录插入 3 行,其中我只想插入 1 条记录。任何帮助将不胜感激。

我正在寻找类似下面的东西

表 A

scode cname fvalue ISIN

FB, Facebook, 10, INAB13230LL IBM, 国际商业机器公司, 10, INAB13230AB

表 B

nsymbol cname fvalue ISIN payup

FBOOK,Facebook,10 INAB13230LL,10 MSFT,微软,10,INAB13230MS,10

表 C

scode cname fvalue ISIN nsymbolpaidup

FB, Facebook, 10, INAB13230LL, FBOOK, 10 IBM, International Business Machines, 10, INAB13230AB, NULL, NULL Null, Microsoft, 10, INAB13230MS, MSFT, 10

提前致谢。

4

1 回答 1

1

也许这样的事情会有所帮助。我会特意用点表示法指定表列,以确定事物的来源,并且我会使用排除 JOIN,如下所示:

select a.scode, a.cname, a.fvalue, a.ISIN, null, null from a left join b on a.ISIN = b.ISIN where b.ISIN IS NULL

union

select a.scode, a.cname, a.fvalue, a.ISIN, a.nsymbol, a.paidup from a inner join b on a.ISID = b.ISID

union

select null, b.cname, b.fvalue, b.ISIN, b.nsymbol, b.paidup from b left join a on b.ISIN = a.ISIN where a.ISIN IS NULL
于 2013-08-27T19:16:15.317 回答