我在表1中有A,B列,在表2中有B,C列。需要在它们之间进行合并。 例如:从表1 UNION中选择A,B从表2中选择0,B。
我不需要这个零来解决列不匹配问题,而是还有其他解决方法吗?
我通过提供简单的示例来提问。但是在我的情况下,表结构很大并且查询已经建立。现在我需要通过替换为零来修复此联合查询。(由于DB2升级)
有人可以帮忙吗?
答案 0 :(得分:0)
SQL结果集中返回的列只能具有一种数据类型。 并集或并集所有都将导致第一个查询的行和第二个查询的行的结果(如果合并,则将其删除重复数据)。 因此,第一个查询的第一列需要匹配第二个查询的第一列的数据类型。
您可以通过运行describe来进行检查:
describe select a,b from t1
如果您在GUI(JDBC连接)中工作,也可以使用
call admin_cmd('describe select a,b from t1')
因此,如果some列不匹配,则必须显式转换数据类型。
答案 1 :(得分:0)
要使联盟中的两条支腿A和B与联盟兼容,则要求:
a) A and B have the same number of columns
b) The types for each column in A is compatible with the corresponding column in B
在查询中,可以使用每种类型的空值:
select a, b from T1
UNION
select null, b from T2
在某些情况下,您可能必须将null显式地转换为与A相同的类型(在这种情况下可能不是):
select a, b from Table 1
UNION
select cast(null as ...), b from Table 2