将两个SQL查询与UNION

时间:2019-06-10 22:40:04

标签: sql union

select a,b,c, from transmission t where t.filnename ='ABC'  
select d,e,f, from transmission t where t.filnename ='ABC'

我希望将结果作为两行一起放入一个结果集中,因为结果将进入DFF报告。

输出应为:

a,b,c  
d,e,f

我尝试了UNION,但它给了我这个错误:

  

将数据类型varchar转换为bigint时出错。

2 个答案:

答案 0 :(得分:0)

使用AS为列赋予相同的名称,

select d AS a, e AS b, f AS c,

并将其转换为普通的超级类型。如果您的数据库支持。 例如,MySQL具有CASThttp://www.mysqltutorial.org/mysql-cast/

select CAST(d AS VARCHAR) AS a, ...

或将其转换为常见的超类型(例如,通过将VARCHAR列解析为数字)。
然后与UNION一起加入。

无论如何,这种做法不太好。我建议重新考虑该方法,并保持标准化的数据结构。

答案 1 :(得分:0)

a,b或c列中至少一个的数据类型为varchar,并且相同位置(第一,第二或第三)中的d,e和f中的至少一个为bigint。正如评论者所说,您可以将bigint强制转换为varchar使其起作用。

使用UNION时,出现在相同位置的列必须具有相同(或至少兼容)的类型。