2011-12-20 129 views
3

我需要在我的查询中合并到表,所以我可以选择它,就好像它是一个一样。同时从两个表中选择?

表A:

Objeto | Atributo 
1   a 

表B:

Palabra | Atributo 
2   b 
3   b 

在我的查询我想从两个,所以我需要以某种方式满足所有行的一个表,在这个例子中选择应是:

Objeto | Atributo 
1   a 
2   b 
3   b 

我该怎么做?

回答

4
select Objecto, Atributo 
from table A 
UNION ALL 
select Palabra, Atributo 
from table B 
1

您正在寻找的东西叫做UNION

1

这不是一个连接(组乘),这是一个联合(组除):

SELECT objecto, atributo 
FROM a 
UNION ALL 
SELECT palabra, atributo 
FROM b 
0

这看起来像一个UNION语句

select * from table_a 
UNION 
select Palabra as Objecto, atributo from table_b 
+0

由于只有一个问题,我在哪里添加where子句所以它从两个选择?我试图把它放在最后,我没有得到正确的结果 – lisovaccaro 2011-12-20 05:40:28

+0

@ Liso22 where子句将在子句之后出现。那就是你将会添加两个where子句来过滤结果。 – Zohaib 2011-12-20 05:46:08

1

你需要的东西,如:

select objeto, atributo from tableA 
union all 
select palabra as objeto, atributo from tableB 
order by 1 asc 

联盟将确保所有的行,从两个表中包含(一)order by子句将它们正确地排序,在关闭的机会,你有完全不同或相同的objeto/palabra列。

您可能还需要考虑作出这一某种形式的看法,如果它很可能是在很多地方有用的 - 这将大大简化您的客户端代码。


的(a)这是一个选项。另一种是自己使用union,但这会删除重复的行,这可能不是你想要的。