我有两个表,每个表都有一个用于标识名称的列,如何进行查询以按名称显示两个表记录
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
答案 0 :(得分:0)
(以下所有示例都使用people
而非persons
,因为我没有注意,但我相信您会理解)
要回答您的问题,只需使用UNION
和ORDER 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