如何显示同一数据库中2个表的所有记录?

时间:2015-07-15 00:45:07

标签: mysql command-line

我正在为完成学士学位所需的课程创建一个数据库。我的数据库中有2个表," gereport"和" majorreport"。两个表都有相同的信息,但我希望它们分开。我的问题是,我试图概述我仍然需要采用的所有类,包括ge类和主类。我试图做以下事情:

mysql> SELECT gereport.*, majorreport.* FROM gereport, majorreport;

这是我得到的结果:

+-------+-----------+-------+------+-------+---------+-------+------+
| area  | class     | units | done | area  | class   | units | done |
+-------+-----------+-------+------+-------+---------+-------+------+
| A1    | TRANSFER  |  2.66 | yes  | LD    | CS 46A  |     3 | yes  |
| A1    | TRANSFER  |  2.66 | yes  | LD    | CS 46B  |     3 | yes  |
| A1    | TRANSFER  |  2.66 | yes  | LD    | CS 46A  |     6 | yes  |
| A1    | TRANSFER  |  2.66 | yes  | LD    | CS 49J  |     3 | yes  |

快进,我得到一份清单:     464行(0.00秒)

它应该总共只有45行。我对mysql很新。是否有任何命令可用于使每个表中的行显示在一个表中?我不能拥有主键,因为有些类可能在几个区域,有些区域有几个类。

简而言之,我想我想要的是桌子加入向下,而不是横向加入。

2 个答案:

答案 0 :(得分:0)

你想要一个工会:

来自MySQL文档(https://dev.mysql.com/doc/refman/5.0/en/union.html

  

UNION用于组合多个SELECT语句的结果   到一个结果集。

select * from gereport
UNION
select * from majorreport;

请注意,在我看来,明确关于列是一个好习惯,以便明确列“正确堆叠”。所以我写这样的查询:

select area, class, units, done from gereport
UNION
select area, class, units, done from majorreport;

答案 1 :(得分:0)

我相信您正在寻找UNION

SELECT * FROM gereport
UNION
SELECT * FROM majorreport;

请注意,此查询未进行优化。如果您正在运行一个不断进行此查询的大型数据库,我会添加一些索引并重新组织数据库,以便您可以进行一些效率更高的连接。