2011-12-20 133 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,但這會刪除重複的行,這可能不是你想要的。