2011-10-04 206 views
2

我有4-5台具有几乎相同的名字,我需要选择具有不同于他们同样名称的列。到目前为止,我这样做:从UNION中选择多个表中的相同列有没有其他选择?

SELECT colA, colB FROM Table1 
    UNION 
    SELECT colA, colB FROM Table2 
    UNION 
    etc... 

看起来这可能是过于冗长,如果你有比同类表的屈指可数,想知道是否有任何替代语法。理想情况下,我想的东西通配符-Y,像

SELECT colA, colB FROM Table% 

如果没有替代UNION,为什么不呢?有没有允许这个特定的原因?我猜想这是因为SQL应尽可能具体,当它涉及到的表定义(表+山坳名称,类型等),同时允许在数据操作的灵活性(因此,我们有行通配符)。

回答

2

有没有其他选择,我能想到的。如果我是挑剔,我会说,如果你有一个包含类似的数据类似的表,你应该重新考虑你的数据库设计:-)

+0

我有同样的想法,但它不是_my_设计:)他们是本地化的表(例如,TableUK,TableUSA,TableJapan)有大量的数据,每天来的,所以他们被分开。显然,与一张巨大的桌子相比,这使得整个过程更快。不过,我希望他们不要马上添加更多表格。 – Alex

+0

@Alex:应该是一个分区表吗? – gbn

+0

您也可以创建一个视图,并在其中添加一列“国家”。但那么'联合'会进入代码的观点... –

1

无备用由数据库提供商开发的联合查询。

0

可以使用表的别名。 例如:

select a.colA, b.colA, a.colB, b.colB 
from table1 a 
+0

这将工作,如果他不想从每个表的每一行要在结果集中一行。您正在创建专栏。 –

+0

在这种情况下,sql服务器有一些名为'转置',这将行变成列。 – mrRuben

相关问题