如何用mysql显示按名称排序的两个表的结果?

时间:2014-02-17 15:42:46

标签: mysql

我有两个表,每个表都有一个用于标识名称的列,如何进行查询以按名称显示两个表记录

companies
id | company
1  | maxxtor
2  | bhg

persons
id | company
1  | John Thorn
2  | Maria Smith

我希望输出如下:

2  | bhg
1  | John Thorn
2  | Maria Smith
1  | maxxtor

1 个答案:

答案 0 :(得分:0)

(以下所有示例都使用people而非persons,因为我没有注意,但我相信您会理解)

要回答您的问题,只需使用UNIONORDER BY

即可
select * from people
UNION
SELECT * from companies
ORDER by company

请参阅:http://sqlfiddle.com/#!2/c9e99/1

但您可能想要考虑如何存储数据,在名为company的列中使用单个名称可能不是创建可持续代码的最佳方式。

可能需要注意的是,当使用UNION时,第一个表中的列名将用于后续表,例如,如果您有以下(http://sqlfiddle.com/#!2/3b761/1):

CREATE TABLE people ( 
  id int auto_increment primary key, 
  name varchar(20)    
);
CREATE TABLE companies ( 
  id int auto_increment primary key, 
  company varchar(20)
);

您可以使用以下查询并仍然具有相同的结果:

SELECT * from people
UNION
SELECT * from companies
ORDER by name