从具有相同列但具有不同类型的表中获取行

时间:2014-07-20 03:24:21

标签: sql

假设我有以下表格

表A

id    pk_id     name    value (Varchar)
 1      1       name     test name
 2      1       city     los angeles

表B

id    pk_id    name    value (int)
 1      1       age      33
 2      1       amount   30

是否可以获得以下结果?

name     test name
age      33

当我从tablea选择tablea。,tableb。,tableb,其中tablea.pk_id = 1,tableb.pk_id = 1,我得到一行包含所有列。

3 个答案:

答案 0 :(得分:1)

你想要的是一个UNION,但由于你有不同类型的字段,而且UNION要求所有字段都应该是相同的类型,所以要特别注意。

因为你没有指定你的RDBM是什么,我将为oracle做。但基本的想法是,您只需要一个函数将您的数字列转换为varchar列:

select name, value from tablea where pk_id=1 
UNION ALL
select name, TO_CHAR(value) from tableb where pk_id=1 

它应该能满足您的需求。

答案 1 :(得分:1)

SELECT name, value FROM tablea WHERE id=<somevalue>
UNION ALL
SELECT name, CONVERT(varchar(10), value) FROM tableb WHERE pk_id=<somevalue>

您需要使用UNION关键字,但您的列必须是相同的数据类型

答案 2 :(得分:-2)

你可以使用它..

         Select name,age
         from TableA,TableB
         where TableA.id=TableB.id;