我检查了这个站点的代码,以堆叠两个表(将结果从一个表放在另一个表的结果下),其中列名不同。我知道UNION ALL在名称相同的情况下工作..我知道UNION ALL在一个表的信息比另一个表有更多信息的情况下,对一个表中缺少的列名称赋值有效但是如果列怎么办名字不同?就像在一个表中列名称是CHP而在另一个表中它是“CHILD HEALTH PLUS”并且我需要将这两列堆叠在一起?
答案 0 :(得分:6)
只要列的数据类型相同,就可以使用UNION。列名称是否不同并不重要。
SELECT column1
FROM Table1
UNION
SELECT column1
FROM Table2
如果您想知道记录来自哪个表,那么您可以添加另一个区分行的字段:
SELECT column1, 'Table1' as TableName
FROM Table1
UNION
SELECT column1, 'Table2' as TableName
FROM Table2
答案 1 :(得分:0)
mysql不要求列名相同,但您可以始终使用“AS”来匹配列名称,例如。
select column1 AS col1, column2 AS col2...
编辑:我刚刚在帖子标题中发现'2008' - 那是sql server 2008吗?无论如何,sql server似乎并不关心。列名称。