我想合并两个表。它们都有不相等的列数,其中一些是共同的,有些则不是。
我如何在不使用单个列名的情况下将它们联合起来(在中间插入虚拟列)。
我必须查询并取几个表的联合,并且将在不同的数据库上进行测试,这些数据库对于同一个表有不同的列名。因此,我不能使用解决单个列名和插入虚拟列来获得联合的常用方法。
谢谢,高尔。
我想合并两个表。它们都有不相等的列数,其中一些是共同的,有些则不是。
我如何在不使用单个列名的情况下将它们联合起来(在中间插入虚拟列)。
我必须查询并取几个表的联合,并且将在不同的数据库上进行测试,这些数据库对于同一个表有不同的列名。因此,我不能使用解决单个列名和插入虚拟列来获得联合的常用方法。
谢谢,高尔。
我如何在不使用单个列名的情况下将它们联合起来
你不能。
使用 UNION 时,列的数量和类型必须匹配。
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);