通过两个表中存在的公共字段(如名称)来联合两个表和顺序

时间:2011-01-20 06:53:11

标签: mysql sql union

我有两个表a和b,其中包含一个字段名称。

我需要列出这两个表中的数据。我想到了使用union,但是在结果列表中,第一个表中的数据出现,然后是第二个。

我想要的是按字段名称排序,因此结果应该是按名称顺序排列的两个表的混合。

3 个答案:

答案 0 :(得分:3)

select slug, name, 1 as mt 
  from tablea 
union 
select slug, name, 0 as mt 
  from tableb 
 order 
    by name;

以上对我来说效果很好。结果会不会有任何复杂情况?

答案 1 :(得分:0)

假设您的查询是

SELECT field1 FROM TABLE1 WHERE 1 
UNION SELECT field1 FROM TABLE2 WHERE 1
你可以把它变成像这样的子查询

 SELECT * FROM (SELECT field1 FROM TABLE1 WHERE 1 
UNION SELECT field1 FROM TABLE2 WHERE 1) AS `result` ORDER BY `result`.`field1`

答案 2 :(得分:0)

或者,您可以使用加入查询,例如:

SELECT tablea.firstname, tablea.middlename, tablea.lastname, tableb.phone 
FROM tablea, tableb 
WHERE tablea.ID = tableb.ID

然后,您可以根据自己的喜好对结果进行排序。