2010-07-16 36 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