2015-05-11 49 views
3

我想找到一個查詢,將從兩個表中選擇,但不加入這兩個表,因爲我不想在一行上的結果。SQL子查詢還是不是?

可以說我有這些表:

Persons1     Persons2 
Number Name Surname Number Name Surname 
----------------------- ------------------------- 
1  Peter Miller 1  Frank Farian 
2  Hans Geige  2  Thomas Müller 

當我使用此查詢:

SELECT 
    NEW.NAME, 
    OLD.NAME 
FROM 
    PERSONS1 NEW, 
    PERSONS2 OLD 
WHERE 
    NEW.Number = 1 AND 
    OLD.Number = 1 

我得到以下結果:

Peter Frank 

我怎麼寫查詢得到:

Peter 
Frank 
+2

能否請您給有關的實際情況更多的解釋?根本不清楚 –

+2

除了你的例子太糟糕了。既然你在where子句中使用了TableName(new)和TableName(OLD)'(Old.Name = 1或new.name = 1)'的新舊句柄。兩個結果都應該返回。因爲它們已經是表中的兩行了。或者在這種情況下......'Name = 1',但這就是你的例子中崩潰的地方,因爲你不知道名字是什麼,名字是怎樣的1和一個名字......你怎麼知道什麼名字是舊的vs在你的例子中新的?我看不到任何已知的專欄。 – xQbert

+0

對不起,我忘記了第二張桌子,所以我改變了它。現在好多了嗎? –

回答

8

使用UNION此:

SELECT NEW.NAME 
FROM PERSONS1 NEW 
WHERE NEW.Number = 1 
UNION 
SELECT OLD.NAME 
FROM PERSONS2 OLD 
WHERE OLD.Number = 1 
+0

這是一個正確的想法,只是在這個問題上的一個不好的例子是拋棄它 – Mackan

+0

協議正確的想法的例子如此糟糕無法證實,如果這是正確的。 – xQbert

+0

這就是證明回答問題的人有多好的證明。理解這個問題幾乎是不可能的,並且@dotnetcom提供了正確的答案。恭喜。 +1 – Nizam