2010-07-15 63 views
0

我有一個兩個表x和y。在該表中,x1表示國家,x2表示國家,y表表示y1國家,y2表示國家。對於這些數據,我如何才能在這四個國家/地區的這兩個表格中獲得不同的國家/地區值?如何在多個表中的多個字段中獲取不同的字段值?

此之前,我在這樣一個表中使用一個單一的國家,

$query="select distinct(`x1`) from x"; 

現在,我有取不同值在這種雙表格以及來自四個國家的價值觀。對於這種聯合是可能的。但我需要任何解決方案在沒有聯盟概念的單個查詢中使用。

請爲此提供相關建議。在此先感謝...

+1

爲什麼你不能使用'UNION'?你能舉一個你現有數據的例子,你想要返回什麼? – Mike 2010-07-15 11:39:41

+0

@Mike我使用並獲得聯盟的解決方案,除了聯盟,我要求解決方案的任何其他替代或簡單的方法。 – Karthik 2010-07-15 12:32:53

回答

1

理念:用UNION

+0

工會是好的,但我需要一些其他的解決方案 – Karthik 2010-07-15 12:38:36

+0

在寫作時沒有指定:P會考慮一個替代 – MadH 2010-07-15 14:53:03

1

不是最有效的查詢過,但試試這個:

SELECT `x1` FROM x 
UNION 
SELECT `x2` FROM x 
UNION 
SELECT `y1` FROM y 
UNION 
SELECT `y2` FROM y 
+1

@KM:'UNION'返回不同的結果,所以不需要'DISTINCT'每個「SELECT」。 – Mike 2010-07-15 11:58:10

+0

@km,@mike - 聯合是好的,但我需要一些其他的解決方案。 – Karthik 2010-07-15 12:39:22

+0

@Karthik,UNION是做到這一點的方式,其他任何事情都會更加複雜,爲什麼你不能使用UNION? – 2010-07-15 12:47:04

1

聯盟是最好的回答這個問題,因爲這正是它的爲...設計。

我能想到的唯一的其他方法將是一個完全外部聯接 - 是這樣的:

select coalesce(cx.country,cy.country) country 
from (select distinct country from x) cx 
full outer join (select distinct country from y) cy 
on cx.country = cy.country 

但是,你不能這樣做在MYSQL全外連接(據我所知) - 和解決方法涉及工會...

+0

檢查與此... – Karthik 2010-07-28 04:35:34

相關問題