2010-07-16 37 views
0

我在MySQL中有兩個表,一個包含一個字段City,另一個包含一個字段HomeCounty。我需要按字母順序排列X個記錄,以便將城市和HomeCounty都記錄到集合中。加入並排序MySQL中兩個表的結果

我無法加入,因爲這兩個表沒有關係...因爲我需要這兩列是「一個」,而不是兩個。

所以,我希望所有的City記錄和HomeCounty記錄都在一個集合中,然後按字母順序排序並將其限制爲X.我真的不知道該怎麼做。聯盟?

+0

您可以提供一些示例數據和所需的輸出嗎? – 2010-07-16 19:22:54

回答

2

是的,你會使用一個UNION:

SELECT city AS name 
    FROM TABLE_1 
UNION ALL 
SELECT homecountry AS name 
    FROM TABLE_2 
ORDER BY name 
    LIMIT ? 

更改爲UNION,如果你有你想刪除重複的,但它會慢UNION ALL。

UNION中的ORDER BY應用於整個結果集。如果您想要對UNION中的每個語句應用不同的ORDER BY條件,則必須使用括號定義語句:

(SELECT city AS name 
    FROM TABLE_1 
ORDER BY name DESC) 
UNION ALL 
SELECT homecountry AS name 
    FROM TABLE_2 
    LIMIT ? 
+0

正是我想要的,謝謝先生! – Tower 2010-07-17 07:49:26

+0

順便說一句,有趣的是,兩個答案都有「國家」一詞,儘管我使用的詞是「縣」...... – Tower 2010-07-18 18:40:54

0

一些與此類似:

select name from 
(
select city as name from table a 
union 
select country from table b 
) 
order by name 
+0

不需要子查詢 – 2010-07-16 17:43:08