-5

我想合并两个表。它们都有不相等的列数,其中一些是共同的,有些则不是。

我如何在不使用单个列名的情况下将它们联合起来(在中间插入虚拟列)。

我必须查询并取几个表的联合,并且将在不同的数据库上进行测试,这些数据库对于同一个表有不同的列名。因此,我不能使用解决单个列名和插入虚拟列来获得联合的常用方法。

谢谢,高尔。

4

2 回答 2

3

我如何在不使用单个列名的情况下将它们联合起来

你不能。

使用 UNION 时,列的数量和类型必须匹配。

于 2012-06-28T19:29:43.343 回答
2

SELECT...UNION...SELECT您可以通过检查INFORMATION_SCHEMA.COLUMNS有问题的两个(或更多)表来综合适当的语句。有了这些列,您可以构建 SQL,以便只包含公共列。

使用 T-SQL:

SELECT  COLUMN_NAME
FROM    INFORMATION_SCHEMA.COLUMNS
WHERE   TABLE_NAME = 'FirstTable'
UNION
SELECT  COLUMN_NAME
FROM    INFORMATION_SCHEMA.COLUMNS
WHERE   TABLE_NAME = 'SecondTable'

以C#为例来描述逻辑:

List<string> sharedColumnNames = CallTheAforementionedSql();
string unionStatement = string.Format(
  "SELECT [{0}] FROM FirstTable UNION SELECT [{0}] FROM SecondTable",
  string.Join("],[", shareColumnNames.ToArray())
);

var stuff = ExecuteSql(unionStatement);
于 2012-06-28T19:31:32.987 回答